Вопрос

Я веб-разработчик, и я хочу перенести свои веб-продукты на iPhone.Один из продуктов похож на Google Maps:показать карту на экране телефона вы можете перетащить карту или изменить ее размер и просмотреть некоторую информацию, которую мы добавим на карту.

Я знаю, что существуют некоторые технологии, которые позволяют вам использовать HTML, CSS и Javascript для разработки собственных приложений для iPhone.Я выделил несколько:

Существуют ли другие подобные продукты?В чем разница между ними?Что мне следует выбрать?

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

Решение

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

Ответ Рори Блита содержит некоторые важные замечания о двух мобильных платформах JavaScript.Однако его ключевые положения неверны.На самом деле Titanium и PhoneGap скорее похожи, чем различны.Оба они предоставляют функции мобильного телефона через набор API-интерфейсов JavaScript, а логика приложения (html, css, javascript) выполняется внутри собственного элемента управления WebView.

  1. PhoneGap — это не просто встроенная оболочка веб-приложения.Через API-интерфейсы Javascript PhoneGap «веб-приложение» имеет доступ к функциям мобильного телефона, таким как геолокация, камера акселерометра, контакты, база данных, файловая система и т. д.По сути, любая функция, предоставляемая SDK для мобильного телефона, может быть «соединена» с миром JavaScript.С другой стороны, обычное веб-приложение, работающее в мобильном веб-браузере, не имеет доступа к большинству этих функций (основной причиной является безопасность).Таким образом, приложение PhoneGap — это скорее мобильное приложение, чем веб-приложение.Конечно, вы можете использовать PhoneGap для создания оболочки веб-приложения, которое вообще не использует API-интерфейсы PhoneGap, но PhoneGap был создан не для этого.

  2. Titanium НЕ компилирует ваш код html, css или javascript в «родные биты».Они упаковываются как ресурсы в исполняемый пакет, подобно встроенному файлу изображения.Когда приложение запускается, эти ресурсы загружаются в элемент управления UIWebView и запускаются там (конечно, как JavaScript, а не как собственные биты).Не существует такой вещи, как компилятор преобразования javascript в собственный код (или в Objective-C).В PhoneGap это делается точно так же.С архитектурной точки зрения эти две структуры очень похожи.

Теперь они чем-то отличаются?Да.Во-первых, Titanium кажется более многофункциональным, чем PhoneGap, поскольку он объединяет больше функций мобильного телефона с JavaScript.Наиболее заметно, что PhoneGap не предоставляет JavaScript многим (если таковые имеются) собственные компоненты пользовательского интерфейса.Titanium, с другой стороны, имеет комплексные API-интерфейсы пользовательского интерфейса, которые можно вызывать в JavaScript для создания и управления всеми видами встроенных элементов управления пользовательского интерфейса.Используя эти API пользовательского интерфейса, приложение Titanium может выглядеть более «родным», чем приложение PhoneGap.Во-вторых, PhoneGap поддерживает больше платформ мобильных телефонов, чем Titanium.API-интерфейсы PhoneGap являются более универсальными и могут использоваться на различных платформах, таких как iPhone, Android, Blackberry, Symbian и т. д.Titanium в первую очередь ориентирован на iPhone и Android, по крайней мере, на данный момент.Некоторые из его API зависят от платформы (например, API пользовательского интерфейса iPhone).Использование этих API снизит кроссплатформенность вашего приложения.

Итак, если вы заботитесь о том, чтобы ваше приложение выглядело более «нативным», Titanium — лучший выбор.Если вы хотите, чтобы ваше приложение было проще «портировать» на другую платформу, PhoneGap будет лучше.

Обновлено 13.08.2010: Ссылка на ответ сотрудника Титаниума на вопрос Микки.

Обновлено 04.12.2010:Я решил ежегодно пересматривать этот пост, чтобы поддерживать актуальность информации.За год многое изменилось, из-за чего часть информации в первоначальном посте устарела.

Самое большое изменение произошло с Титаном.Ранее в этом году Appcelerator выпустила Titanium 1.0, который с архитектурной точки зрения радикально отличался от своих предыдущих версий.В версии 1.0 элемент управления UIWebView больше не используется.Вместо этого вы вызываете API-интерфейсы Titanium для любых функций пользовательского интерфейса.Это изменение означает пару вещей:

  1. Пользовательский интерфейс вашего приложения становится полностью родным.В вашем приложении больше нет веб-интерфейса, поскольку встроенные API-интерфейсы Titanium берут на себя управление всеми потребностями вашего пользовательского интерфейса.Titanium заслуживает большой похвалы как пионер в области «кроссплатформенного собственного пользовательского интерфейса».Это дает программистам, которые предпочитают внешний вид собственного пользовательского интерфейса, но не любят официальный язык программирования, альтернативу.

  2. Вы не сможете использовать HTML или CSS в своем приложении, поскольку веб-представление исчезло.(Примечание:вы все равно можете создать веб-представление в Titanium.Но есть несколько функций Titanium, которыми вы можете воспользоваться в веб-представлении.)Титан: вопросы и ответы:Что случилось с HTML и CSS?

  3. Вы не сможете использовать популярные библиотеки JS, такие как JQuery, которые предполагают существование объекта DOM.Вы продолжаете использовать JavaScript в качестве языка программирования.Но это практически единственная веб-технология, которую вы можете использовать, если приедете в Titanium 1.0 в качестве веб-программиста.

Титановое видео:Что нового в Титаниум 1.0.

Итак, компилирует ли Titanium 1.0 ваш JavaScript в «родные биты»?Нет.Appcelerator наконец-то прояснил эту проблему в этом блоге разработчиков:Проект титановых направляющих:JS-среда. Мы, программисты, более искренние люди, чем сотрудники отдела маркетинга, не так ли?:-)

Переходим к PhoneGap.О PhoneGap можно сказать не так уж много нового.По моему мнению, разработка PhoneGap велась не очень активно, пока в конце этого года к ней не присоединилась IBM.Некоторые даже утверждали, что IBM вносит в PhoneGap больше кода, чем Nitobi.Правда это или нет, но приятно знать, что PhoneGap активно разрабатывается.

PhoneGap продолжает опираться на веб-технологии, а именно HTML, CSS и JavaScript.Не похоже, что у PhoneGap есть какие-либо планы по объединению встроенных функций пользовательского интерфейса с JavaScript, как это делает Titanium.Хотя веб-интерфейс по-прежнему отстает от нативного пользовательского интерфейса по производительности и внешнему виду, этот разрыв быстро сокращается.Есть две тенденции в веб-технологиях, которые обеспечивают яркую особенность мобильного веб-интерфейса с точки зрения производительности:

  1. Движок JavaScript переезжает из интерпретатора в виртуальную машину.JavaScript — это JIT-компиляция в собственный код для более быстрого выполнения. JS-движок Safari:БелкаРыба Экстрим

  2. Рендеринг веб-страниц переходит от использования процессора к использованию ускорения графического процессора.Задачи с интенсивным использованием графики, такие как переход страниц и 3D-анимация, становятся намного более плавными благодаря аппаратному ускорению. Композитинг с ускорением на графическом процессоре в Chrome

Подобные улучшения, заимствованные из настольных браузеров, быстро передаются в мобильные браузеры.Фактически, начиная с iOS 3.2 и Android 2.0, управление мобильным веб-представлением стало гораздо более эффективным и дружественным к HTML5.Будущее мобильного Интернета настолько многообещающе, что привлекло в город большого ребенка: JQuery недавно анонсировала свой мобильный веб-фреймворк. Благодаря JQuery Mobile, предоставляющему гаджеты пользовательского интерфейса, и PhoneGap, предоставляющему функции телефона, они в совокупности создают, на мой взгляд, идеальную мобильную веб-платформу.

Я должен также упомянуть Сенча Тач как еще одна платформа гаджетов мобильного веб-интерфейса.Версия Sencha Touch 1.0 недавно была выпущена по модели двойного лицензирования, включающей GPLv3.Sencha Touch хорошо работает с PhoneGap, как и JQuery Mobile.

Если вы ГВТ программист (как я), возможно, ты захочешь проверить ГВТ Мобильная версия, проект с открытым исходным кодом для создания мобильных веб-приложений с помощью GWT.Он включает в себя оболочку PhoneGap GWT, которая позволяет использовать PhoneGap в GWT.

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

Из того, что я собрал, вот некоторые различия между ними:

  • PhoneGap в основном генерирует собственные оболочки для того, что до сих пор веб-приложения.Он создает проект «WhateverYourPlatformIs», вы его создаете и развертываете.Если мы говорим об iPhone (где я провожу свое время), он не сильно отличается от создания средства запуска веб-приложений (ярлык, который получает собственный значок Springboard, поэтому вы можете запускать его следующим образом (нравиться) родное приложение).Само «приложение» по-прежнему является html/js/etc. и запускается внутри размещенного элемента управления браузера.Помимо этого, PhoneGap обеспечивает мост между JavaScript и собственными API-интерфейсами устройств.Итак, вы пишете JavaScript для API-интерфейсов PhoneGap, а затем PhoneGap выполняет соответствующий соответствующий собственный вызов.В этом отношении это является отличается от развертывания обычного старого веб-приложения.

  • Исходный код Titanium компилируется в нативные биты.То есть ваш html/js/etc.не просто прикрепляются к проекту и затем размещаются внутри элемента управления веб-браузера — они превращаются в собственные приложения.Это означает, например, что интерфейс вашего приложения будет состоять из родной Компоненты пользовательского интерфейса.Есть способы получить нативный внешний вид без нативного приложения, но...хорошо...каким кошмаром это обычно оказывается.

Они схожи тем, что вы пишете все свои материалы, используя типичные веб-технологии (html/js/css/бла-бла-бла), и получаете доступ к собственным функциям через специальные API-интерфейсы JavaScript.

Но, опять же, приложения PhoneGap (PhonGapps?Я не знаю...это глупое имя?Проще сказать - я это знаю) начинают свою жизнь веб-приложениями и заканчивают своей жизнью веб-приложениями.На iPhone ваш файл html/js/etc.просто выполняется внутри элемента управления UIWebView, а API-интерфейсы JavaScript PhoneGap, ваши вызовы js перенаправляются на собственные API.

Приложения Titanium становятся нативными приложениями — они просто разрабатываются с использованием технологий веб-разработки.

Что это на самом деле иметь в виду?

  1. Приложение Titanium будет смотреть как «настоящее» приложение, потому что, в конечном итоге, оно является «настоящее» приложение.

  2. Приложение PhoneGap будет выглядеть как веб-приложение, размещенное в элементе управления браузера, поскольку, в конечном итоге, оно является веб-приложение, размещенное в элементе управления браузера.

Что подойдет вам?

  • Если вы хотите писать собственные приложения, используя навыки веб-разработчика, Titanium — ваш лучший выбор.

  • Если вы хотите написать приложение, используя навыки веб-разработчика, которое вы могли бы реально развернуть на нескольких платформах (iPhone, Android, Blackberry и любых других платформах, которые они решат включить), и если вы хотите получить доступ к подмножеству собственных функций платформы (GPS, акселерометр и т. д.) через единый API JavaScript, PhoneGap, вероятно, — это то, что вам нужно.

Вы можете спросить:Зачем мне писать PhoneGapp (я решил использовать это имя), а не веб-приложение, размещенное в Интернете?Могу ли я по-прежнему получать доступ к некоторым собственным функциям устройства таким образом, но при этом иметь удобство настоящего веб-развертывания, вместо того, чтобы заставлять пользователя загружать мое «родное» приложение и устанавливать его?

Ответ:Потому что вы можете отправить свое PhoneGapp в App Store и взимать за него плату.Вы также получаете значок запуска, из-за которого пользователю сложнее забыть о вашем приложении (я гораздо чаще забываю о закладке, чем о значке приложения).

Вы, конечно, можете взимать плату за доступ к вашему веб-приложению, размещенному в Интернете, но сколько людей действительно собираются пройти через этот процесс, чтобы сделать это?В App Store я выбираю приложение, нажимаю кнопку «Купить», ввожу пароль, и все готово.Он устанавливается.Через несколько секунд я использую его.Если бы мне пришлось использовать чей-то одноразовый интерфейс мобильных веб-транзакций, что, вероятно, означает необходимость вводить свое имя, адрес, номер телефона, номер копии и другие данные, которые я не хочу сообщать, я бы почти наверняка не стал бы этого делать. Я не доведу этого до конца.Кроме того, я доверяю Apple — я уверен, что Стив Джобс не собирается регистрировать мою информацию, а затем взимать с моего CC плату за подписку на непослушные журналы ради удовольствия.

В любом случае, за исключением того факта, что задействованы технологии веб-разработки, PhoneGap и Titanium очень разные - вплоть до того, что их можно сравнить лишь поверхностно.

Между прочим, я ненавижу веб-приложения, и если вы читаете обзоры iTunes App Store, пользователи довольно хорошо их замечают.Я не буду называть никаких имен, но у меня на телефоне есть пара «приложений», которые выглядят и работают как мусор, и это потому, что это веб-приложения, размещенные внутри экземпляров UIWebView.Если бы я хотел использовать веб-приложение, я бы открыл Safari и, знаете ли, перешел к нему.Я купил iPhone, потому что мне нужны вещи, похожие на iPhone.У меня нет проблем с использованием, скажем, шикарного веб-приложения Google внутри Safari, но я бы почувствовал себя обманутым, если бы Google просто добавил закладку в Springboard, представив веб-приложение как нативное.

Должен идти сейчас.У моей подруги выражение лица «не могли бы вы, пожалуйста, перестать пользоваться этим компьютером на три секунды».

Я прохожу курс по разработке Android / iPhone, и мы провели 8 недель с Titanium (не полный рабочий день) (версия Titanium 1.4.2, а время было примерно в ноябре 2010 года).Вот мой опыт.

Двойное таргетирование iPhone Android

Несмотря на то, что в руководствах по API утверждается, что функциональность доступна как для Android, так и для iPhone, это не так.Большая часть этого материала просто не работает ни на одной из платформ.Некоторые вещи работают по-другому.

Многие люди в классе создавали приложения для iPhone, и они не могут заставить их работать на Android без серьезной правки.Я разработал простое детское приложение под названием Animap (см. Android market / Appstore в Швеции) и начал разрабатывать под Windows.Как только целевая установка Android заработала, я открыл проект в OS X.Он не показывает никаких материалов для сборки для iPhone, только для Android.Вам нужно запустить проект с двумя целями под OS X.(Хорошо, я скопировал соответствующие файлы в новый проект).Следующая проблема - анимация не работает на iPhone (они работают на Android).События прокрутки не работают так же на iPhone.(то есть на Android вы получаете событие untouch, когда пользователь прекращает прокрутку и убирает палец с экрана, на iPhone этого не происходит).

Поскольку это где-то не упоминается, вам в основном нужно программировать методом проб и ошибок сначала на одной платформе, затем на другой платформе.Методом проб и ошибок я подразумеваю, что потребуется около двух дней, чтобы заставить такое простое приложение, как Animap, работать на другой платформе.Вам также нужно будет иметь if (android) then...или если (iphone)...по всему вашему коду...

Загрузка и настройка

Вы должны следовать инструкциям в точности.Не пытайтесь использовать 64-разрядную версию Java.Он не будет компилировать демонстрационное приложение KitchenSink 1.4.0.(1.3 работает нормально!) Вы должны поместить файлы непосредственно на диск C, так как длинные пути приведут к тому, что внешняя программа не получит все параметры командной строки, если они станут длинными.(Хотя это нормально для небольших программ) в 1/3 случаев набор инструментов просто останавливается, и вы должны снова нажать "запустить".Тогда это, вероятно, сработает...очень ненадежный.Симулятор не будет найден при запуске, и тогда вы должны просто отключить его adb.exe с помощью Ctrl + Alt + Delete и повторить попытку.

Подключение к сети

В сети Wi-Fi вы иногда теряете живое соединение, и Titanium выходит у вас из строя (интерфейс компиляции / развертывания) Если у вас нет работающего подключения к Интернету, он не запустится, так как не сможет авторизовать вас на своих серверах.

API

CSS, HTML и jQuery - сущий пустяк по сравнению с этим.Titanium напоминает любой другой старый графический API, и вам нужно установить некоторые свойства для каждой отдельной кнопки / поля / и т.д.Получить неправильное поле очень просто, запомнив все свойства, которые необходимо установить?Вы написали это заглавными буквами в нужном месте?(поскольку это не улавливается компилятором, но будет рассматриваться как ошибка времени выполнения, если вам повезет протестировать эту часть)

В Titanium все просто ломается, когда вы добавляете другое представление поверх элемента управления или щелкаете в другом месте графического интерфейса.

Документация

Несколько страниц API содержат символ Android, но возвращают значение null только при попытке создать элемент управления.Они не просто доступны на платформе Android, несмотря на символы.Иногда упоминается, что Android не поддерживает определенный метод, но тогда весь API отсутствует.

Кухонный кран

Демонстрационное приложение.Я упоминал, что он не компилируется, если вы помещаете его в папку проекта Eclipse, потому что путь становится слишком длинным?Должен быть помещен на ваш диск C в корневую папку.В настоящее время я использую символическую ссылку (mklink / J ...)

Недокументированные методы

Вы должны соответствующим образом использовать things как label.setText ('Hello World'), чтобы изменить надежность метки, но это вообще не задокументировано.

Отладка

Titanium.API.info ("Распечатки - это единственный способ отладки");

Редактирование

API-интерфейсы недоступны ни в каком хорошем формате, поэтому вы не можете получить обычное завершение кода с помощью справки и т.д.в Затмении.Аптана, пожалуйста, помоги!

Аппаратное обеспечение

Похоже, что компилятор / инструменты не являются многопоточными, поэтому необходим быстрый компьютер с быстрым жестким диском, так как вы должны выполнять много проб и ошибок.Я упоминал о плохой документации?Вы должны попробовать там все, так как вы не можете этому доверять!

Некоторые позитивные вещи

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

  • База данных ошибок

  • Она тоже открыта.Вы можете просто увидеть, что вы не одиноки, и найти обходной путь вместо еще 4 часов, потраченных на метод проб и ошибок.

  • Сообщество

  • Кажется, он активен на их форумах.

Ошибки

  • Titanium 1.4 не является потокобезопасным.Это означает, что если вы используете потоки (используйте URL:свойство в вызове CreateWindow) и программируйте так, как будто потоки работают и отправляют события с данными туда и обратно, вы сталкиваетесь со множеством очень, очень странных вещей - потерянные обработчики, потерянные окна, слишком много событий, слишком мало событий и т.д.и т.д.Все это зависит от времени, размещение строк кода в другом порядке может привести к сбою или исправлению вашего приложения.Добавление окна в другое file.js прерывает ваше app.js выполнение...Это также разрушает внутренние структуры данных в Titanium, поскольку иногда они могут обновлять внутренние структуры данных в paralell, перезаписывая только что измененное значение чем-то другим.

Большая часть проблем, с которыми я сталкивался при работе с Titanium, проистекает из моего опыта работы в системах реального времени, таких как OSE, которые поддерживают сотни потоков, событий и передачу сообщений.Предполагается, что это должно работать в Titanium 1.4, но это просто делает это ненадежно.

  • Javascript (который является новым для меня) беззвучно умирает при ошибках времени выполнения.Это также означает, что мелкие и распространенные ошибки, такие как неправильное написание имени переменной или чтение в нулевом указателе, не приводят к сбою, когда это необходимо, поэтому вы можете отладить это.Вместо этого части вашей программы просто перестают работать, например, обработчик событий, потому что вы неуместно разместили / неправильно ввели символ.

  • Затем у нас есть более простые ошибки в Titanium, такие как некоторые параметры, не работающие в функциях (что довольно распространено, по крайней мере, на платформе Android).

  • Скорость цикла отладки методом проб и ошибок Запустив Titnium Developer на нескольких компьютерах, я заметил, что узким местом является жесткий диск.Твердотельный накопитель в ноутбуке ускоряет цикл сборки примерно в 3-5 раз по сравнению с дисководом с частотой вращения 4200 оборотов в минуту.На настольных КОМПЬЮТЕРАХ наличие двух дисков в RAID 1 (режим чередования) делает сборку примерно на 25 процентов быстрее, чем на одном диске с несколько более быстрым процессором, а также превосходит ноутбук с твердотельным накопителем.

Краткие сведения

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

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

Как консультант, пытающийся доставить заказчику довольно простые приложения на мультиплатформенных платформах, я не уверен, что это на самом деле быстрее, чем разработка собственного приложения на двух платформах.Это связано с тем, что когда вы набираете скорость, вы быстро управляетесь с Titanium, но потом внезапно вы смотрите вниз и обнаруживаете, что оказались в такой глубокой яме, что не знаете, сколько часов нужно потратить на поиск обходного пути.Вы можете просто НЕ обещать определенную функциональность за определенный срок / время / стоимость.

О себе:Использую Python в течение двух лет с wxPython.(этот графический интерфейс не соответствует требованиям, но никогда не ломается подобным образом.Возможно, это я не понял потоковую модель, используемую Javascript и Titanium, но я не одинок, согласно их открытым дискуссионным форумам, объекты GUI внезапно используют неправильный контекст / не обновляются ..???) до этого у меня был опыт программирования на C и ASM для мобильных устройств.

[правка - добавлена часть с ошибками и не является потокобезопасной] [Правка - теперь, проработав с ней более месяца, в основном на ПК, но некоторые и на OS X.Добавлено двойное таргетирование для iPhone и Android.Добавлена скорость цикла отладки методом проб и ошибок.]

Corona SDK (Ansca Mobile) использует Lua в качестве языка кодирования.Дополнительную информацию о Lua можно найти на сайте lua.org.

Хотя мы планируем добавить дополнительную веб-интеграцию и элементы собственного пользовательского интерфейса, наше внимание, как правило, будет сосредоточено на приложениях с интенсивным использованием графики, таких как разработка игр, а не на веб-технологиях.Другими словами, мы не предполагаем, что люди будут писать приложения Corona полностью на Javascript/HTML/CSS.

Я работаю с Titanium уже больше недели и чувствую, что хорошо понимаю его слабость.

1) Если вы надеетесь использовать один и тот же код на нескольких платформах, удачи!Вы увидите что-то вроде BackgroundGradient и будете удивляться, пока не обнаружите, что версия Android не поддерживает это.Затем придется вернуться к использованию градиентного изображения, может, с таким же успехом можно использовать его для обеих версий, чтобы упростить код, верно?

2) Много странного поведения, на Android SDK Titanium вам нужно понимать, что такое «тяжелое» окно, чтобы заставить работать кнопку «Назад» или даже лучше отслеживать события ориентации.Платформа Android на самом деле не такая, а просто то, как Titanium пытается заставить работать свой API.

3) Вы брошены в темноту. Все потерпит крах, и вам придется начать комментировать код, а затем, когда вы его найдете, никогда его не использовать.Есть некоторые очевидные ошибки, такие как ориентация и проценты на Android, которые являются проблемой уже более шести месяцев.

4) Баги....ошибок много, и о них будут сообщать, они будут сидеть месяцами, а исправляться за несколько дней.Я удивлен, что они вообще планируют выпустить мобильный SDK для Black berry, когда с Android так много других проблем.

5) Javascript-движки Titanium Iphone и Titanium Android совершенно разные.В версии для Android вы можете загружать удаленные файлы JavaScript, включать и использовать такие библиотеки, как mootools, jquery и т. д.Я был на седьмом небе от счастья, когда узнал об этом, потому что мне не нужно было постоянно компилировать свое приложение для Android.Процесс установки APK для Android занимает очень много времени!Для iPhone ничего из этого невозможно, кроме того, версия для iPhone имеет гораздо более быстрый движок JavaScript.

Если вы держитесь подальше от многих частей собственного пользовательского интерфейса, то есть вместо этого используете setInterval для обнаружения изменений ориентации, придерживаясь градиентных изображений, забудьте о кнопке «Назад», создайте свои собственные анимации, забудьте заголовок окна, панели инструментов и панель мониторинга.Вы действительно можете создать API, который работает и с тем, и с другим, и не требует большого количества переписывания.Но в этот момент оно так же медленно, как и веб-приложение.

Так стоит ли оно того?После всей боли каждая минута стоит того.Вы можете абстрагировать логику и просто создавать разные пользовательские интерфейсы для каждого, а не везде.Титан позволяет создавать плавные и быстрые приложения.Вы теряете мощные возможности каждой платформы по макетированию, но если вы думаете просто, все можно сделать на одном языке.

Почему не веб-приложение?На телефонах Android начального уровня создание веб-просмотра ужасно медленное и потребляет много памяти, которую вы могли бы использовать для выполнения более сложной логики.

Вот более свежий и углубленный анализ Appcelerator и PhoneGap: http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap

А вот еще подробнее, чем они отличаются программно:http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript

собственный набор карт поддерживается в Titanium

Создание виджетов HTML5, похожих на виджеты iPhone, — это одно, а заставить их работать одинаково хорошо — совсем другое дело.Производительность анимации HTML5 (даже простых переходов просмотра), прокрутка длинных списков, реакция на жесты кажутся липкими и прерывистыми.Пользователь iPhone заметит разницу.

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

Думаю, я пока останусь с родными приложениями.

Ромобиль Родос (http://rhomobile.com/products/rhodes) очень похож по подходу на PhoneGap, но является единственным фреймворком с:

  1. шаблон контроллера представления модели (как это предусмотрено большинством веб-фреймворков)
  2. объектно-реляционный менеджер
  3. поддержка всех популярных смартфонов (включая Windows Phone 7)
  4. размещенная служба разработки (а не просто размещенная сборка): http://rhohub.com
  5. полноценный отладчик и эмулятор без SDK в среде IDE RhoStudio
  6. поддержка синхронизированных автономных данных

Для всех, кто интересуется Titanium, я должен сказать, что у них не очень хорошая документация, отсутствуют некоторые классы, свойства, методы.Но многое «задокументировано» в их примере приложения KitchenSink, так что это не так уж и плохо.

Насколько я понимаю, PhoneGap предоставляет API-интерфейсы Javascript для большей части API-интерфейсов iPhone.

Titanium кажется проще для веб-разработчика.Это простой XML-файл для создания базового приложения TabView, а затем все в области содержимого контролируется HTML/JS.Я также знаю, что Titanium предоставляет некоторый доступ к некоторым платформам через JavaScript (в частности, доступ к информации о местоположении, идентификатору телефона и т. д.).

ОБНОВЛЯТЬ:Titanium добавил Maps API в версию 0.8 своей платформы.

Вам следует изучить Objective C и программировать собственные приложения.Не полагайтесь на вещи, которые, по вашему мнению, облегчат жизнь.Apple позаботилась о том, чтобы самым простым способом было использование родных инструментов и языка.Для ваших 100 строк javascript я могу сделать то же самое с помощью 3 строк кода или вообще без кода, в зависимости от элемента.Посмотрите несколько руководств — если вы понимаете JavaScript, то задача c не сложна.Обходные пути ужасны, и Apple может отключить вас в любой момент, когда захочет.

Из упомянутых вами решений ни одно из них, похоже, не дает вам прямого доступа к платформе MapKit, представленной в OS 3.0.

Поскольку HTML-виджеты Google Maps не так хороши, как MapKit (пример см. в Google Latitude), вам, вероятно, лучше всего разработать собственное сенсорное приложение Cocoa или выбрать решение, которое вы можете расширить, добавив интеграцию с MapKit.PhoneGap является расширяемым таким образом (по умолчанию он имеет открытый исходный код), и некоторые другие решения могут быть такими же.

редактировать:В Titanium теперь есть поддержка MapKit.

Я пробовал корону.Это было хорошо, пока я не обнаружил, что он не поддерживает потоковую передачу звука в формате mp3.Итак, я остановился прямо на этом.Я думаю, что если я действительно хочу стать разработчиком приложений для iPhone, мне следует изучить obj c.Все, что я хотел сделать, это приложение, в котором есть список радиостанций, и вы нажимаете на них, и оно начинает воспроизводиться.

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