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

StackOverflow https://stackoverflow.com/questions/64420

  •  09-06-2019
  •  | 
  •  

Вопрос

Я не хочу тратить время на изучение Obj-C.Я потратил более 7 лет на программирование веб-приложений.Разве не должно быть способа использовать WebView и просто написать все приложение на javascript, извлекая файлы прямо из ресурсов проекта?

Это было полезно?

Решение

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

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

  2. Перетащите объект WebView в свой интерфейс и измените его размер.

  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, затем перетаскивал свой файл сверху в finder.У меня это сработало.

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

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

Вызов Obj-C из javascript: вызов objective-c из javascript

Вызов javascript из Obj-C: разработка приложений для iPhone для веб-хакеров

Чтение файлов из пакета приложений: пользовательский интерфейс

Другие советы

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

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

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

Чтобы протестировать, откройте http://robertsanders.name/dev/stackoverflow/html5.html на вашем iPhone.

Если вы откроете эту страницу, а затем посмотрите на файловую систему взломанного iPhone, вы должны увидеть базу данных где-нибудь в /private/var/mobile/Library/WebKit/Databases / .Там даже есть каталог открытых в Интернете баз данных.

root# sqlite3 /private/var/mobile/Library/WebKit/Базы данных/Databases.db Версия SQLite 3.5.9 Введите ".help" для получения инструкций

sqlite> .базы данных файл с именем seq


0 main /private/var/mobile/Библиотека/WebKit/Базы данных/Databases.db

sqlite> .таблицы

Источники баз данных

sqlite> выбрать * из баз данных;

1|http_robertsanders.name_0|NoteTest|База данных|Пример API|20000|0000000000000001.db

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

http_robertsanders.name_0|5242880

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

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

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

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

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

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

посмотрите на новый книга О'Рейли по этому вопросу

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

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

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

Запись в блоге о phonegap и Apple - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Телефонный разрыв Дома

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top