Как я могу написать приложение для iPhone полностью на JavaScript, не делая его просто веб-приложением?
-
09-06-2019 - |
Вопрос
Я не хочу тратить время на изучение Obj-C.Я потратил более 7 лет на программирование веб-приложений.Разве не должно быть способа использовать WebView и просто написать все приложение на javascript, извлекая файлы прямо из ресурсов проекта?
Решение
Я нашел ответ, покопавшись вокруг.Вот что я сделал:
Создайте новый проект в XCode.Я думаю, что я использовал приложение на основе просмотра.
Перетащите объект WebView в свой интерфейс и измените его размер.
Внутри вашего 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]]]; }
Теперь все файлы, которые вы добавили в качестве ресурсов в проект, доступны для использования в вашем веб-приложении.У меня есть файл index.html, включающий javascript и css, а также файлы изображений без проблем.Единственное ограничение, которое я обнаружил на данный момент, заключается в том, что я не могу создавать новые папки, поэтому все файлы загромождают папку ресурсов.
Трюк:убедитесь, что вы добавили файл в качестве ресурса в 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.