Поддержка старых пользователей iPhone

Теперь, когда iPhone SDK 4.0 доступен для загрузки, а iOS 4.0 станет доступной для потребителей в ближайшее время, имеет ли смысл начинать использовать новые функции, доступные в ОС 4.0?

Меня больше всего беспокоит то, что использование функций 4.0 требует, чтобы конечные пользователи также обновляли свои телефоны / iPod до версии 4.0. Хотя этот процесс довольно безболезненный, разумно ли ожидать, что большинство пользователей обновит его? Самому приложению не нужно ничего вводить в новую ОС, но некоторые традиционные методы анимации теперь «не приветствуются» в пользу их блочных аналогов. Для меня это нормально, я бы предпочел использовать блочные методы, но меня беспокоит, что это доставляет неудобства конечным пользователям.

Так каков общий опыт по этому поводу? Выбираете ли вы самую последнюю и лучшую версию или придерживаетесь текущей версии?

p.s. Это предполагает, что GM устанавливает ОС конечным пользователям, когда она доступна, а не бета-версию.


person Paul Alexander    schedule 21.06.2010    source источник
comment
Подобные обсуждения происходили вокруг запуска 3.0 в прошлом году. Например, в этом вопросе обсуждалось использование функций 3.0 в приложении, совместимом с 2.0: stackoverflow.com/questions/986589/   -  person Brad Larson    schedule 25.06.2010
comment
@progrmr - Да, и как только награда будет присуждена, она будет удалена из вкладки избранных вопросов. Я хочу получить как можно больше ответов, чтобы подтвердить вопрос. Кроме того, SO уже напоминает мне принять ответ. Я дам ответ до конца дня.   -  person Paul Alexander    schedule 01.07.2010


Ответы (8)


По-разному. У вас есть как минимум 3 варианта, и лучший из них зависит от требований вашего приложения:

  1. Ваше приложение не требует каких-либо API-интерфейсов iOS 4.0 - вы должны создавать с помощью BaseSDK 4.0, но для целевого развертывания установите минимальную версию, которую вы должны иметь (например, 3.0). < br> Преимущества: (1) ваше приложение будет запускаться на любом устройстве, имеющем хотя бы эту версию целевого развертывания, и (2) оно будет поддерживать быстрое переключение приложений на устройствах с iOS 4.0. Недостатки: вы не можете использовать какие-либо API после целевой версии развертывания.

  2. Ваше приложение было бы лучше с API 4.0, но его можно было бы использовать без них - если вы можете условно использовать API 4.0, либо предоставляя ограниченную функциональность на устройствах до iOS 4.0, либо предоставляя аналогичные функции при использовании других Если API-интерфейсы используются на устройствах до 4.0, вы можете создавать с помощью BaseSDK 4.0, устанавливать для целевого развертывания минимальную версию, которая у вас должна быть (например, 3.0), и условно использовать вызовы API iOS 4.0. Преимущества: вы можете работать на всех устройствах с минимальной версией iOS. Недостатки: все эти условные вызовы могут усложняться.

  3. Для работы вашего приложения требуется несколько API-интерфейсов iOS 4.0 - здесь у вас нет выбора. Выполните сборку с помощью BaseSDK 4.0, установите целевое развертывание 4.0 и используйте эти API 4.0.
    Преимущество: код проще, никаких условных обозначений для версии iOS нет. Недостатки: ваше приложение не будет работает на iPad (они получат 4.0 осенью 2010 года), ваше приложение никогда не будет запускаться на iPhone раньше, чем 3G (они не получают 4.0), а некоторые функции iOS 4.0 не будут работать на iPhone 3G.

Во всех случаях ваш базовый SDK будет 4.0, ваше целевое развертывание будет минимальным, требуемым, и если вам нужен более новый API, вы можете условно использовать его, если он есть на устройстве.

Просто скомпилировав с помощью BaseSDK 4.0, вы получите быстрое переключение приложений на устройствах 4.0, даже если вы не используете какие-либо функции 4.0. По крайней мере, это должны делать все приложения, даже если они нацелены на iOS 2.0. Не используйте функции 4.0, если они вам не нужны, и вы можете настроить таргетинг на более широкий спектр старых устройств и устройств, которые не были обновлены.

В этом недавнем ответе на SO рассказывается, как выполните эту настройку для BaseSDK и целевого развертывания, а также как условно использовать API-интерфейсы для нацеливания на несколько версий прошивки.

person progrmr    schedule 26.06.2010

Рекомендуемая конфигурация - установить для Base SDK наивысший уровень (например, 4.0), а для цели развертывания - соответствующую версию (зависит от того, какая функция платформы используется в вашем приложении).

Конечно, приложение всегда может проверить версию ОС и пропустить вызовы неподдерживаемых фреймворков. Это распространенный метод создания универсальных приложений для iPad и iPhone.

person ohho    schedule 22.06.2010
comment
Согласованный. И это не заслуживает отдельного ответа, но миру было бы лучше с простой страницей часто задаваемых вопросов по этой теме, особенно, потому что это первое обновление iPhone, которое недоступно для всей установочной базы. . - person Justin Searls; 22.06.2010
comment
Это кажется логичным, но вы подчеркнули «рекомендуется». Где это рекомендуется? Есть официальное заявление Apple? - person Paul Alexander; 22.06.2010
comment
@Horace - Я просмотрел файл About Xcode и iPhone SDK.pdf, установленный вместе с Xcode, но не нашел никаких рекомендаций по его подтверждению. Какой файл вы имеете в виду? Какая страница? - person Paul Alexander; 22.06.2010
comment
@Paul Alexander, стр. 2, раздел "Что нового", начните с "Только для iPhone" ... - person ohho; 22.06.2010

Лично я обычно нацелен на один крупный выпуск позади (т. Е. На цель 3.1 вместо 4.0), что обычно дает мне окно «Вы обновляли свой телефон в прошлом году?» Но в зависимости от вашего приложения вы можете использовать многозадачность или другие функции, которые есть только в 4.0. Тогда дело в том, что, по вашему мнению, ваши пользователи сразу захотят. Если вы думаете, что они могут немного подождать, посмотрите, как пойдут дела; Если вы обнаружите, что многие пользователи быстро переходят на 4.0, то внесите изменения.

person jer    schedule 21.06.2010

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

Судя по статистике за предыдущие годы, обновление 2.0-> 3.0 заняло у меня больше года, но в основном это были пользователи iPod touch, поскольку Apple взимала за него 10 долларов.

Я ожидал, что скорость принятия 4.0 будет намного быстрее, но имейте в виду, что iPhone / IPod первого поколения не получают обновления 4.0.

person 5ound    schedule 27.06.2010

Я обнаружил, что просмотр количества iPhone / Mac и т. Д. С установленными старыми и новыми ОС мало что скажет о привычках их владельцев к расходам.

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

Если ваше приложение имеет любой уровень сложности, его доставка займет некоторое время, и у вас будет довольно маленькое окно, в котором iPad все еще работает с 3.x.

Разработка для нескольких уровней ОС - это боль. Помимо необходимости запускать приложение на iPad / iPhone / iPod, теперь вам нужно сделать это еще и с двумя операционными системами. Пропустите проверку одного места, где вы выполняете только вызов 4.0 в редко выполняемом коде, и вы получаете сбои.

Для долговременной стабильности вашей кодовой базы также хороша сборка для 4.0 только на новом приложении. Лучше простое.

person Tom Andersen    schedule 29.06.2010

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

Как и при обычном обновлении, iTunes будет ворчать об обновлении, и, если вам нужно переустановить, телефон обычно перенаправляет на последнюю версию.

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

В настоящее время, как я понимаю, основной мотивацией остаться на 3.x будет совместимость с iPad.

Вам также следует подумать о том, как ваши продажи будут выглядеть в ближайшие 6 месяцев. Какова стоимость неиспользования новейших функций? Сможете ли вы сократить время разработки или добавить передовые функции, перейдя на 4.0? Может ли конкурирующее приложение использовать функции 4.0 для получения преимущества? Рекламирование только версии 4.0 может положительно повлиять на восприятие приложения.

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

Чем больше покупателей вы ожидаете, тем целесообразнее позволить им запустить ваше приложение. Кроме того, вероятнее всего, покупателями будут люди, обладающие компьютерными ноу-хау? Если так, то вероятность того, что они останутся на 3.x, будет еще ниже.

Также имейте в виду, что телефоны 3G до iPhone не поддерживают iOS4.

Еще одно дополнение:

Apple уже начинает исключать приложения 2.0 из AppStore, см. https://developer.apple.com/iphone/checklist/

person Nuoji    schedule 29.06.2010

Да, IMO абсолютно имеет смысл использовать новые функции в OS 4.0. Пользователь, у которого установлена ​​версия 4.0, будет плохо переносить приложения, которые не поддерживают быстрое переключение приложений (и дисплей с более высоким разрешением, чем у iPhone 4), по крайней мере.

Меня больше всего беспокоит то, что использование функций 4.0 требует, чтобы конечные пользователи также обновляли свои телефоны / iPod до версии 4.0.

Это не правда. Для поддержки новых функций не требуется отказываться от поддержки более старых версий ОС. Просто установите для базового SDK значение 4.0, а для цели развертывания - 3.x. И убедитесь, что ваш код не вызывает методы, специфичные для 4.0, без проверки их существования (respondsToSelector:).

person Ole Begemann    schedule 21.06.2010
comment
Я думаю, вы, возможно, упустили суть. Если я собираюсь использовать функции 4.0 - это требует ОС 4.0. Мне не нужно ничего, что предлагает новая ОС. Методы 3.x все еще существуют и поддерживаются - они просто не приветствуются. Меня не интересует поддержка двух отдельных баз кода, смешанных в одном исходном файле, разделенных условиями if (... responsedsToSelector: ...) повсюду. - person Paul Alexander; 22.06.2010
comment
Иногда необходимо динамически проверять, доступны ли определенные функции и классы. Платформа iOS (и Mac OS X) поддерживает слабое связывание, но для классов вам необходимо использовать NSClassFromString, потому что слабое связывание классов слишком ново для старых платформ, чтобы его поддерживать. - person ; 24.06.2010
comment
Методы 3.x все еще существуют и поддерживаются - они просто «не рекомендуются». Если не считать формального отказа от поддержки (а некоторые из них), то, что вы могли сделать в 3.x, никоим образом не обескураживает теперь, когда 4.0 вышла. И вы можете смело использовать любую новую функциональность 4.0, если вы чувствительны к смешанной среде, в которой собираетесь работать. Я создаю приложение, которое включает ежедневные локальные уведомления. Мне приходится иметь дело с этим даже на уровне пользовательского интерфейса - я даже не показываю вам эту кнопку, если ваша ОС не поддерживает их. - person Dan Ray; 25.06.2010

progmr уже дал очень хороший ответ; одна вещь, которую стоит добавить, - это некоторые достоверные данные:

http://www.appleinsider.com/articles/10/07/22/chitika_ios_4_already_powering_50_of_iphone_traffic.html

т.е. 50% пользователей iphone (которые устанавливают и используют приложения с рекламой по состоянию на июль 2010 г.) все еще используют версии до 4.0.

person JosephH    schedule 18.08.2010