Что плохо в Universal Applications для iOS

С выходом iPad'а и 4-го iPhone нам приходится ломать голову над тем, как продлить жизнь наших старых проектов и на этих устройствах. Apple ставит своих разработчиков перед проблемой, от которой ранее их (нас) оберегала — это неоднородная среда выполнения. Если раньше было целых 3 модели телефонов, которые принципиально мало чем отличались друг от друга с точки зрения возможностей, предоставляемых разработчику. Даже разрешение экранов у них совпадало до пиксела. Теперь это совсем не так: iPad — это вообще устройство несколько другого рода, открывающее новые возможности. На 4-м iPhone тоже увеличили разрешение.

Всё это ведёт к тому, что приходиться в той или иной степени адаптировать программу под разные устройства. В хорошо спроектированной программе на UIKit, где святое триединство Model-View-Controller чётко соблюдено, переделать придётся только слой View и вероятно не обойдётся без изменений Controller'а. Но на самом деле это может затронуть и модель, например, если там, условно говоря, «хранятся» изображения, размер которых связан с разрешением экрана (так у нас в одном проекте). А если речь идёт об игровой программе, коих в аппсторе, мягко говоря, немало, то всё становится ещё сложнее: под каждое разрешение, скорее всего, есть отдельный немалый набор графических ресурсов. В связи с этим всем возникает два важных вопроса:

  1. Технический вопрос: Как теперь распространять программы: отдельные версии для отдельных устройств или один большой монстр для «всего»?
  2. Маркетинговый вопрос: Как бы сбить больше бабла с тех, кому нужна и iPad, и iPhone версия, при этом дав сэкономить тем, кому нужно «или-или»?


Ответ Apple на эти вопросы надо понимать таков, соответственно:

  1. Universal apps (то есть вариант «монстра»)
  2. Никакого дифференцирования по девайсам, ребята. Одна программа, одна цена — все устройства.

Пункт второй может быть и неплох для пользователей, но нашим заказчикам в основном не нравится. Их тоже можно понять: в iPad-версию вложены дополнительные деньги, хочется получить отдачу. Есть вариант мучений с In-App Purchase, но этот способ неудобен ни пользователям, ни нам, разработчикам. В общем, если этот момент ещё дискуссионный, то по первому пункту Apple не мешало бы принять меры.

Возьмём к примеру нашу главную гордость (и заодно главный геморрой) игру «Дурак». Версия для старых iPhone весит 11,6 мегабайт. Версия для iPad, которая сейчас в разработке, добавит к этому ещё мегабайт 8. Ещё мегабайт 5-6 добавит версия для iPhone 4. Всё это связано с большим количеством графики, адаптируемой под каждое новое разрешение. И это всего лишь карточная игра, а если речь идёт о богатой на картинки и эффекты аркаде... В общем, вопрос: интересно ли пользователю качать и потом хранить у себя игру размером 25 мегабайт, из которых ему нужно только 11? С одной стороны, конечно, не смертельно, но с другой — зачем зазря занимать место даже, если места много?

Решение напрашивается. Apple следовало бы дать разработчикам возможность заливать разные версии программы под разные устройства, объединив их в App Store на одной страничке под одним именем, отдавая пользователю нужную версию в зависимости от интересующего его устройства. Хорошо было бы также дать возможность задавать разные цены для версий под разные устройства и давать скидку, если пользователь скачал больше одной версии программы. Нужна гибкая система. Под некоторые устройства версия программы может и отсутствовать. Например, программы, которые зависят от возможностей недоступных на том или ином устройстве (запись видео, блютус через GameKit и т. п.). Сейчас для таких программ в описании висит огромный дисклеймер: не покупать, если у вас такое-то устройство.

Однако Apple, похоже, устраивает текущая ситуация.

Опубликовать в Google Plus
Опубликовать в LiveJournal

Комментарии

  1. Как в старые добрые дос времена, когда в каждой игре была поддержка всех видеоадаптеров и графика для каждого из них =)

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">