Игорь Неменёнок из Chili Studio поделился с нами опытом разработки приложения для новой платформы Apple TV.
Прошло не так много времени с начала продаж нового Apple TV, а разработчики уже вовсю экспериментируют с новой платформой. Наша команда из Chili Studio решила не оставаться в стороне и попробовать свои силы в разработке приложения для tvOS. В этой статье мы поделимся своим опытом и расскажем о подводных камнях, на которые нам довелось натолкнуться.
Дизайн приложения
После прочтения гайдлайнов и нескольких вечеров, был готов приблизительный дизайн приложения. Основные советы, которые даёт Apple — всё должно быть просто, чисто и интуитивно понятно. Чтобы пользователь понимал, куда можно нажать, что можно скролить и т.п.
TVMLKit
Первым вариантом для разработки приложения был выбран TVMLKit, т.к. Apple предлагает именно этот подход для написания клиент-серверных приложений для Apple TV. Подробнее об этом подходе можете почитать на странице документации и статью от ребят из Rutube, которые уже выпустили своё приложение на TVMLKit’e.
Плюсы:
- Легко использовать.
- Большое количество готовых шаблонов и элементов.
- UI можно обновлять на сервере. Означает, что не нужно при малейших изменениях отправлять приложение на ревью и ждать неделю.
Минусы:
- Ограничения в дизайне.
- Сложность дебага. Разработчики жалуются, что Safari web inspector не видит контекста приложения.
- Нет возможность редактировать некоторые хедеры в запросах. В нашем случае это был жирный минус, т.к. API видео сервиса не работает, если не указать кастомный User-Agent. Всё это потому, что для запросов используется XMLHtttpRequest.
Из-за ограничений в дизайне и невозможности редактирования User-Agent’a мы решили отказаться от этого подхода и разработать традиционное приложение.
Традиционные приложения
С этим подходом всё понятно, можно писать нативные приложения на Objective-C или Swift, используя все плюшки UKit’a, Storyboards, Autolayout и т.п.
Чтобы понять что к чему, можно скачать демо-проект с сайта Apple и посмотреть исходники.
Focus Engine
В tvOS нет никакого тач интерфейса, а все взаимодействия происходит с помощью пульта управления, поэтому разработчику нужно разобраться с возможностями Focus Engine. Если вкратце, то этот движок отвечает за поведение фокуса в приложении, какие элементы должны фокусироваться, в каком порядке, а также есть возможность отключать фокусировку у определённых объектов.
Хорошая статья на эту тему есть в блоге Airbnb.
Сложности с которыми столкнулись:
1. Cocoapods
На данный момент большая часть библиотек не поддерживает tvOS. Чаще всего вы увидите такую надпись в консоли:
The platform of the target `Pods` (tvOS 9.0) is not compatible with `POD_NAME`, which does not support `tvos`.
Чтобы решить эту проблему, можно указать ветку или тег с поддержкой tvOS, или же сделать fork и внести нежные изменения, чаще всего достаточно в .podspec файле указать:
s.tvos.deployment_target = '9.0'
2. Баги в tvOS
Так как платформа новая, то и не обходится без багов. Как пример, на данный момент нельзя указать цвет текста UITabBarItem для состояния UIControlStateNormal.
3. Тестирование приложение на реальном устройстве
Есть 2 способа загрузить приложение на Apple TV: TestFlight и используя кабель USB-C на USB. С TestFlight всё понятно, а вот кабель USB Type C на USB Type A не идёт в комплекте с Apple TV, так как нужен только разработчикам, поэтому найти в магазине такой кабель – тот ещё квест.
4. Ввод текста с помощью пульта
Ввести текст можно, используя Siri или выбирая символы пультом. Комплекты Apple TV c поддержкой Siri поставляются лишь в 8 стран, и Россия туда не входит. Ввод текста с других iOS устройств так же не поддерживается.
5. iPhone как игровой контроллер
На презентации Apple разработчики игры Crossy Road показали, как весело играть в игру вместе с друзьями, используя iPhone вместо джойстика, но проблема в том, что удобного способа, как это сделать разработчикам в своих приложениях, нет. На форуме Apple советуют посмотреть в сторону Bonjour и Bluetooth LE.
Общие впечатления
Разработка под tvOS оставляет только положительные впечатления. TVMLKit подойдёт очень многим приложениям и позволит сэкономить время и ресурсы на вёрстке, визуальных эффектах и оптимизации. Но если вы захотите создать что-то визуально уникальное, то всегда можно обратиться к нативным способам разработки.
В заключение
Несмотря на различные минусы и молодость данной платформы, для разработчиков открывается совершенно новый и не изученный рынок, где пока не существует никаких правил и историй успеха. То, что работает на телефонах, не факт, что будет работать на ТВ. Сейчас в App Store всего несколько тысяч приложений, а значит шанс, что ваше приложения станет популярным, очень высок.
Поэтому нет времени прохлаждаться и ждать пока платформа станет популярной, ведь тогда будет уже поздно!