[Кино1ТВ] Обновление приложения для Android

Основная концепция интерфейса приложения Кино1ТВ не менялась с самого первого выпуска – в горизонтальном меню располагались три вкладки (Премьеры, Подписка и Амедиатека), в фильмы были помещены в вертикально прокручивающиеся списки. Такое решение было разумным, когда контента на сервисе было немного, но с увеличением числа фильмов ориентироваться в списках становилось все сложнее.

Новый интерфейс мы решили сделать таким же, как используется в Google Play Movies. В отличии от проектирования интерфейсов под Android TV, где используется фреймворк Leanback, здесь Google не снабдил разработчиков готовыми шаблонами, поэтому интерфейс пришлось строить самостоятельно – где-то помогли библиотеки от Google, где-то сторонние.

В конце апреля новая версия приложения появилась в Google Play.

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

[Кино1ТВ] Обновление приложения для Android

Оплата через Touch ID

Мы долго ломали голову, почему при вызове окна оплаты в приложении не отображается окно Touch ID для авторизации, хотя с системных настройках опция подтверждения через Touch ID включена. Да и в других приложениях при совершении оплаты Touch ID появлялся, а у нас нет.

Оказалось, что мы смотрели сборку, установленную напрямую через Xcode, а в этом случае окно Touch ID не появляется (вместо него – стандартное окно для ввода пароля вручную). При этом на сайте Apple для разработчиков мы так и не смогли найти информацию об этом. Получается вот такое незадокументированное поведение.

[Android] Перезагрузка устройства через ADB

Перезагрузить устройство через adb можно с помощью следующей команды:

adb reboot

Можно еще так:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Nexus 5 без Android N (Nougat)

К сожалению, телефон Nexus 5 не получит в качестве обновления Android Nougat, которая должна выйти ориентировочно уже в сентябре. Google, как и Apple, поддерживает свои устройства лишь несколько лет. Но в отличии от Apple, у Google «срок жизни» устройств меньше и составляет всего два года:

  • Nexus 5X (2015) – до сентября 2017
  • Nexus 6P (2015) – до сентября 2017
  • Nexus 6 (2014) – до октября 2016
  • Nexus 9 (2014) – до октября 2016
  • Nexus 5 (2013) – до октября 2015
  • Nexus 7 (2013) – до июля 2015
  • Nexus 10 (2012) – до ноября 2014

К слову, iOS 10 будет доступна начиная с iPhone 5, который вышел в 2012 году. Прошло четыре года, а Apple все еще продолжает поддерживать данный телефон. Огорчает, что Google не идет по такому же пути.

Ждем анонса новых Nexus’ов, чтобы можно было обновить свой телефон. Покупать 5x / 6P бессмысленно, потому что осенью следующего года они также перестанут получать обновления.

Какой образ Android выбрать – x86 или ARM?

Какая разница между системными образами Android под x86 и ARM? В утилите SDK Manager доступно на выбор два образа, так какой из них установить на своем компьютере, чтобы запустить эмулятор?

На самом деле, установить можно как образ для x86, так и для ARM. Разница будет заключаться в том, что при использовании образов x86 скорость эмулятора в сочетании с HAXM (Intel Hardware Accelerated Execution Manager) возрастает почти в 10 раз по сравнению с образом для ARM, т.к. разработчики, обычно, используют компьютеры на базе Intel x86.

Тем не менее, образ ARM более точно соответствует устройству на базе Android, но требует эмулирования процессора, что влечет за собой уменьшение производительности.

[Safari] QuotaExceededError: Dom exception 22

Столкнулись с проблемой, что в мобильном браузере Safari на iOS не работала функция сохранения данных в localStorage. Попытка записи вызывала ошибку:

QuotaExceededError: Dom exception 22: An attempt was made to add something to storage that exceeded the quota

Проблема, кстати, была бы не замечена, если не открытая приватная вкладка (режим «Инкогнито»).

Оказывается, у Safari есть такое странное поведение – в режиме «Инкогнито» данные не охраняются в localStorage. Больше похоже на багу, чем на фичу.

[App Store] Об отсутствии доступа к списку транзакцией по платежам

Задал вопрос Apple, почему в iTunes Connect нигде не наблюдается списка транзакций по совершенным платежам пользователей. В отчетах представлены лишь общие сведения о суммарном количестве платежей и подписок, но нет записей вида «Платеж #1, совершен 17.05.2016 в 13:54, тип покупки такой-то, ID транзакции такой-то…», т.е. все то, что есть, скажем, в Google Play, где разработчику изначально все эти данные доступны.

Из-за отсутствия списка транзакций на стороне Apple невозможно провести сопоставление по каждому совершенному платежу, зафиксированному в системе учета разработчика. Так, за прошлый месяц в нашем приложении было совершенно N-платежей, в то время как в отчетах Apple значится сумма в N-200. Спрашивается, а куда делись эти двести незасчитанных покупок? Вот тут и помог бы список транзакций — сделали бы сопоставление данных, нашли, какие платежи не были учтены. Но нет, такое сделать нельзя.

Ответ Apple:

Читать далее «[App Store] Об отсутствии доступа к списку транзакцией по платежам»

iPad Air -> iPad Pro 9,7″

Недавно продал свой iPad Air, купленный в 2013 году, за 22 тыс. рублей (а покупал его тогда за 27990 руб.). Что-то, а продукция Apple, действительно, крайне востребована на вторичном рынке.

После этого чуть больше недели пользовался iPad 3 (он же The New iPad), взятым со склада на работе. Когда у меня раньше был iPad 3, то все действия казалось плавными и быстрыми, но сейчас при работе с планшетом очень сильно заметны подтормаживания. Возможно, виной всему iOS 9…

И вот на днях все же раскошелился, и приобрел iPad Pro 9,7″ (версия с Wi-Fi, 32 ГБ) за 43990 руб., что почти на 10 тыс. меньше, чем официальная цена в App Store. Да, прошли те времена, когда в российском App Store цены были как у перекупщиков. Теперь снова выгодно покупать «серые» устройства, привезенные из Финляндии или США.

iPad Pro стал четвертым планшетом от Apple, которым я пользуюсь. По традиции меняю я их через одно поколение: iPad -> iPad 3 -> iPad Air -> iPad Pro.

Ценообразование в App Store

18 января 2016 года, когда курс доллара превысил 76 рублей, Apple разослала разработчикам информацию о том, что в течение ближайших дней для магазина приложений App Store будет изменена цена в сторону повышения, из расчета 75 руб. за $1 (до этого $1 оценивался в 59 руб.).

22 января курс доллара перевалил за 83 рубля, но уже с конца месяца курс перешел на понижение. С конца марта курс опустился ниже 70 рублей за $1, и на данный момент составляет 66 рублей. Однако на данный момент Apple не торопится вновь пересмотреть цены (уже в сторону понижения), как это было оперативно сделано в дни резкого ослабления курса рубля.

Либо Apple ожидает, что в ближайшие недели рубль вновь ослабеет, либо просто оттягивает неизбежное понижение цен.

Ценообразование в App Store

[Xcode] Missing iOS Distribution signing identity

При попытке на днях отправить очередную сборку приложения в iTunes Connect, выдавалась ошибка «Missing iOS Distribution signing identity for…».

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

Как оказалось, проблема возникала из-за наличия сертификата WWDR в Keychain Access, срок которого завершился 14 февреаля 2016 года. Решением является установка нового сертификата, и удаление старого.