Как я могу записать приложение для iPhone полностью в JavaScript, не делая его просто веб-приложением?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

84
задан Vadim Kotov 5 September 2017 в 11:22
поделиться

11 ответов

Я нашел ответ после поиска вокруг. Вот то, что я сделал:

  1. Создают новый проект в XCode. Я думаю, что использовал основанное на представлении приложение.

  2. Перетаскивают объект веб-представления на Ваш интерфейс и изменяют размеры.

  3. Внутренняя часть Вашего WebViewController.m (или столь же названный файл, в зависимости от названия Вашего представления), в viewDidLoad методе:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];  
    NSData *htmlData = [NSData dataWithContentsOfFile:filePath];  
    if (htmlData) {  
      NSBundle *bundle = [NSBundle mainBundle]; 
      NSString *path = [bundle bundlePath];
      NSString *fullPath = [NSBundle pathForResource:@"index" ofType:@"html" inDirectory:path];
      [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
    }
  4. Теперь любые файлы Вы добавили, поскольку ресурсы к проекту доступны для использования в Вашем веб-приложении. У меня есть файл index.html включая JavaScript и css и файлы изображений без проблем. Единственное ограничение, которое я нашел до сих пор, - то, что я не могу создать новые папки, таким образом, все файлы загромождают папку ресурсов.

  5. Прием: удостоверьтесь, что Вы добавили файл как ресурс в XCode, или файл не будет доступен. Я добавлял пустой файл в XCode, затем перетаскивая мой файл на вершине в средстве поиска. Это работало на меня.

Примечание: Я понимаю, что Obj-C не должен быть этим трудно для изучения. Но так как у меня уже есть это приложение, существующее в JS, и я знаю, что это работает в Safari, это - намного более быстрый dev цикл для меня. Однажды я уверен, что должен буду сломаться и изучить Obj-C.

Несколько других ресурсов я нашел полезным:

Вызов Obj-C из JavaScript: цель-c вызова от javascript

, Называя JavaScript от Obj-C: разработка приложения для iPhone для веб-хакеров

файлы Чтения от комплекта приложений: uiwebview

71
ответ дан NANNAV 24 November 2019 в 08:38
поделиться

посмотрите новую книгу Орейли по этому вопросу

2
ответ дан 3 July 2019 в 09:58
поделиться

Проверьте PhoneGap в http://www.phonegap.com , они утверждают, что он позволяет Вам встраивать JavaScript, HTML и CSS в собственное приложение для iPhone.

22
ответ дан Chris Samuels 24 November 2019 в 08:38
поделиться

Для тех, которые делают это на iPhone 2.1 (возможно, 2.0), Вы не должны создавать специальное обслуживание для локального хранения данных. MobileSafari, кажется, поддерживает API базы данных SQL HTML5/WHATWG. Это - тот же API, поддерживаемый последними версиями настольного Safari и Firefox.

при использовании инструментария как Dojo или ExtJS, который предлагает абстракцию устройства хранения данных, код должен продолжить работать примерно любой современный браузер, включая MobileSafari.

Для тестирования откройте http://robertsanders.name/dev/stackoverflow/html5.html на iPhone.

, Если Вы открываете ту страницу тогда, считают файловую систему Взломанного iPhone, необходимо видеть базу данных где-нибудь в/private/var/mobile/Library/WebKit/Databases/. Существует даже каталог открытого для сети DBS там.

версия 3.5.9 root# sqlite3/private/var/mobile/library/webkit/databases/databases.db SQLite Вводят ".help" для инструкций

sqlite> .databases seq файл

имени <час>

0 основных/private/var/mobile/Library/WebKit/Databases/Databases.db

sqlite> источники .tables

Баз данных

sqlite> выбор * от Баз данных;

1|http_robertsanders.name_0|NoteTest|Database|API example|20000|0000000000000001.db

sqlite> выбирают * из Источников;

http_robertsanders.name_0|5242880

7
ответ дан Robert Sanders 24 November 2019 в 08:38
поделиться

Можно создать приложение, не зная obj-C. Платформа QuickConnectiPhone позволяет Вам делать это. Выезд http://tetontech.wordpress.com для того, как использовать его, а также другие способы сделать то, что Вы спросили.

4
ответ дан Lee 24 November 2019 в 08:38
поделиться

Необходимо записать собственную обертку в Objective C. Эта обертка могла содержать действительно немного строк кода (как, 10) необходимый, чтобы создать веб-представление и переместиться по нему к данному адресу в Интернете (где Ваше приложение находится). Но в этом случае Ваше приложение должно быть полнофункциональным веб-приложением (я имею в виду, использую не только JavaScript, но также и некоторый HTML для разметки).

2
ответ дан Sergey Mikhanov 24 November 2019 в 08:38
поделиться

Я столкнулся с этой той же проблемой. Мне уже записали игру полностью в JavaScript. Я хотел бы сделать iPhone дружественной версией, но Obj-C является излишеством. То, что я закончил тем, что делал, использовало веб-представление для указания на специальный URL приложения для iPhone. После размышления об этом я предполагаю, что мог просто переместить те файлы в каталог приложения и выполнить их локально.

2
ответ дан dawnerd 24 November 2019 в 08:38
поделиться

Там не способ сделать это с текущим API яблока. Ваша самая близкая ставка должна записать простое собственное приложение для iPhone, которое встраивает браузер WebKit. Это позволит Вам просмотреть свое xhtml/js приложение локально.

, Если Вы хотите хранить данные, необходимо будет взять их шаг вперед и включать легкий вес http сервер, что серверы приложение и обеспечивают вызовы, чтобы сохранить и получить данные. Вероятно, не идеальное решение для Вас, но возможно меньше работы, чем полное приложение Obj-C.

Как примечание стороны, Obj-C довольно легко изучить. Существуют тонны примеров в SDK. Сообщество сильно и ответит на хорошо помещенные вопросы без колебания.

2
ответ дан 24 November 2019 в 08:38
поделиться

Titanium Mobile также является вариантом - он позволяет писать JavaScript, который переводится в Objective-C.

1
ответ дан 24 November 2019 в 08:38
поделиться

Я уже некоторое время использую телефонную связь, и, похоже, для меня это дает наилучшие результаты. Я опубликую свой опыт примерно через неделю со ссылкой на свое приложение.

1
ответ дан 24 November 2019 в 08:38
поделиться

По крайней мере двое других упомянули о телефонных разговорах, но я подумал, что опубликую это тоже и упомяну, что Apple одобрила структуру телефонных разговоров. Итак, теперь Apple не откажется от вашего приложения только потому, что вы используете телефонную связь.

Сообщение в блоге о телефонной связи и Apple - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/[1210estivePhone Gap Home

0
ответ дан 24 November 2019 в 08:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: