Приложения для iPhone: веб-приложения или нативные? - PullRequest
6 голосов
/ 16 мая 2010

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

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

Исходя из вашего опыта, что будет лучше для такого рода требований, iPhone или веб-приложений? Каковы недостатки создания собственных приложений и веб-приложений для iPhone, которые работают на браузере iPhone? Кроме того, я ограничен только Objective-C для создания нативных приложений для iPhone? Или есть какие-то другие рамки для этого?

Пожалуйста, будь осторожен со мной, я не начинаю огненную войну.

Ответы [ 3 ]

6 голосов
/ 16 мая 2010

Ты можешь взять торт и съесть его тоже.

Вы можете легко смешивать веб-приложения и нативные приложения, используя UIWebView экземпляры, например реализовать чувствительные к производительности части в коде Какао / Objective-C и вставлять представления WebKit в части, которые будут слишком трудоемкими, чтобы переписать их как собственные.

Вы можете даже обернуть целое веб-приложение в собственный пакет, если вы хотите распространение в App Store - см. PhoneGap .

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

Недостатки:

Веб-приложения могут быть не такими быстрыми, как нативные, хотя с автономной поддержкой HTML5 и специфичными для WebKit расширениями, такими как переходы и анимации, вы можете продвинуться далеко вперед. Убедитесь, что вы используете события касания - Safari задерживается onclick.

Трудно заставить чистое веб-приложение чувствовать как правильное нативное приложение. Например, мобильный WebKit не поддерживает position:fixed, необходимый для репликации верхней панели навигации, а веб-представления имеют другую скорость прокрутки, чем представления таблицы. Это поправимо, но требует тонн JavaScript.

Преимущества:

Быстрое развитие. Я действительно оценил, насколько полезен CSS / HTML для сложных макетов, когда мне приходилось реплицировать приложения за UIView с (InterfaceBuilder в порядке только для полуфиксированного макета).

Вы застрахованы от Apple, внезапно ненавидящей и запрещающей еще одну вещь. Если они удаляют ваше приложение из AppStore, вы можете разрешить пользователям доступ к нему через Интернет (Google сделал это с помощью приложений Voice и Latitude).

Проще портировать веб-приложения на Android и другие (WinMo, HP Pre, последние BlackBerries и т. Д.). Apple занимает первое место, но ее доля разума не пропорциональна доле рынка. Другие догоняют.

Если вы выбираете родной

Вы должны сделать это так, как Apple: Objective-C и Cocoa (вы можете сделать части приложения простым C или C ++). Есть много учебников и книг по этой теме, поэтому я не буду повторять их здесь. Просто несколько случайных советов:

  • списки, несмотря на то, что они являются "родным" форматом iPhone, не являются лучшими для связи клиент-сервер. Списки XML имеют большие накладные расходы даже по стандартам XML, и двоичные списки могут быть трудны для создания и отладки. JSON на самом деле быстрее и с ним обычно легче работать.

  • Если вы выбираете только небольшие биты информации, NSConnection только усложняет ситуацию. Вы можете просто использовать [NSData dataWithContentsOfURL:] в методе, запущенном через performSelectorInBackground:.

  • Уведомления не доставляются, пока UITableView прокручивается. Если вы хотите, чтобы в таблицу загружались лениво загруженные изображения, загрузите и установите их с помощью обратных вызовов.

1 голос
/ 16 мая 2010

Если вы хотите иметь приложение в iTunes App Store, вы должны написать приложение в Objective-C. Вот цитата из соглашения для разработчиков iPhone OS 4.0, взятое из Daring Fireball . Я выделил наиболее актуальный раздел.

3.3.1 - Приложения могут использовать документированные API только таким образом, предписано Apple и не должно использовать или позвоните любым частным API. Приложения должно быть изначально написано в Objective-C, C, C ++ или JavaScript как выполненный iPhone OS WebKit двигатель, и только код, написанный на C, C ++ и Objective-C могут компилировать и прямая ссылка на документально API (например, Приложения, которые ссылаются на Документированные API через промежуточный перевод или Уровень совместимости или инструмент Запрещенный).

Это, конечно, не относится к ОС 3.1 или 3.2, и в настоящее время неизвестно, будет ли после выхода ОС 4.0 Apple задним числом удалять любые существующие приложения, которые использовали такие инструменты. Теоретически, если вам удастся вывести приложение на улицу до выхода 4.0, и вам повезет, то, возможно, вы могли бы использовать что-то вроде PhoneGap, но это кажется действительно большой игрой, чтобы потратить время на использование таких инструментов на данный момент. .

Тем не менее, Objective-C на самом деле не так сложен в изучении, его основной синтаксис - [someObject doSomething]; или [someObject doSomethingWith:thisObject];. У меня очень мало знаний о веб-разработке, поэтому я не могу говорить о его достоинствах или недостатках, но если в веб-приложении все настроено, возможно, вы захотите использовать гибридный вариант, упомянутый выше, или использовать только веб-интерфейс.

1 голос
/ 16 мая 2010

PhoneGap , о котором упоминает Ной, - это, безусловно, путь, по которому вы можете пойти для разработки HTML + javascript и по-прежнему упаковать его для распространения, а также воспользоваться рядом замечательных встроенных функций iPhone.

Все остальное зависит от некоторых элементов, которыми вы не поделились. Насколько быстрым и плавным должен быть ответ от пользовательского интерфейса / поиска? Это место, где задержка веб-приложения, даже через 3G, может побудить вас искать альтернативу для более быстрого локального представления (с использованием всех локальных или даже Objective-C).

Другие места, которые не звучат так, как будто они находятся на вашем пути, для поиска того, где вы, возможно, захотите сделать Objective-C, являются более тяжелой графикой и манипуляциями вокруг анимации (хотя javascript + Canvas и HTML5 о я лжец), используя камеру и / или микрофон для записи мультимедиа, или что-то, что требует достаточно большого объема интенсивной обработки. И последний вопрос - действительно, где вы можете и хотите ли вы выполнить эту работу? На серверах (типичный выбор стиля Google) или на устройстве?

...