Ответ
Да, есть опыт создания приложений для Apple TV на tvOS.
Ключевые отличия и особенности tvOS разработки:
- Фокус-менеджмент: Самая важная концепция. Навигация осуществляется с помощью Siri Remote, и фокус должен визуально перемещаться между элементами интерфейса.
- Использование
UIFocusGuideдля программного направления фокуса. - Переопределение
didUpdateFocus(in:with:)для анимаций при фокусировке/расфокусировке.
- Использование
class FocusableButton: UIButton {
override func didUpdateFocus(in context: UIFocusUpdateContext,
with coordinator: UIFocusAnimationCoordinator) {
coordinator.addCoordinatedAnimations {
if self.isFocused {
// Анимация при получении фокуса: увеличение и тень
self.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
self.layer.shadowOpacity = 0.3
} else {
// Возврат к исходному состоянию при потере фокуса
self.transform = .identity
self.layer.shadowOpacity = 0.0
}
}
}
}
- User Interface: Интерфейсы должны быть простыми, с чёткими зонами нажатия и читаемыми с большого расстояния. Используется
UIKit(режеTVMLKitдля контент-ориентированных приложений). - Top Shelf: Разработка расширения
TopShelf, которое отображает рекомендованный контент на главном экране tvOS. - Хранение данных: Использование
UserDefaultsилиNSCacheдля лёгких данных. Для большего объёма — облачные решения (iCloud, собственный бэкенд). - App Review: Строгие требования к навигации, производительности и отсутствию ссылок на элементы управления, недоступные на TV (например, касание).
Итог: Разработка под tvOS требует особого внимания к навигации без касания, созданию TV-оптимизированных интерфейсов и адаптации под ограниченные, по сравнению с iOS, возможности платформы.
Ответ 18+ 🔞
О, разработка под Apple TV! Да, сталкивался, блядь. Это ж отдельная вселенная, где все твои привычки из iOS идут лесом, потому что тут нет ни хуя из привычного.
Самый главный пиздец, на который уходит 80% времени — это фокус-менеджмент. Забудь про тапы и свайпы. Тут у пользователя в руках этот Siri Remote, и он тыкает в тачпад, а фокус должен прыгать по интерфейсу, как угорелый, но при этом красиво и предсказуемо. Если фокус потеряется или будет скакать, куда не надо, — пользователь тебя проклянет, а ревьюверы пришлют тебя на три буквы.
Вот смотри, как это выглядит в коде. Это святое, блядь, основа основ:
class FocusableButton: UIButton {
override func didUpdateFocus(in context: UIFocusUpdateContext,
with coordinator: UIFocusAnimationCoordinator) {
coordinator.addCoordinatedAnimations {
if self.isFocused {
// Анимация при получении фокуса: увеличение и тень
self.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
self.layer.shadowOpacity = 0.3
} else {
// Возврат к исходному состоянию при потере фокуса
self.transform = .identity
self.layer.shadowOpacity = 0.0
}
}
}
}
А ещё есть UIFocusGuide — это такая невидимая хуйня, которая ловит фокус и перенаправляет его куда тебе надо. Без них иногда просто нихуя не получается сделать нормальную навигацию, особенно в кастомных layout'ах.
Про интерфейсы. Тут надо думать, как дальтоник-дальнобойщик. Всё должно быть большое, жирное, контрастное и читаться с дивана за три метра. Никаких мелких кнопок и сложных жестов. UIKit — твой главный инструмент, TVMLKit — это уже для каких-то особых контентных штук, но обычно все пилят на UIKit.
Top Shelf. Это, сука, такая фича — расширение для главного экрана. Твоё приложение может там показывать какой-то промо-контент. Сделать его — дело не хитрое, но если не сделаешь, будет выглядеть, как лысая жопа — некрасиво и пусто.
С данными тоже весело. UserDefaults — для мелочёвки, типа настроек. Для чего-то посерьёзнее уже надо городить облака, свой бэкенд или iCloud, потому что места на TV не овердохуища.
И да, App Review — это отдельный вид искусства. Там сидят ребята с пультами и смотрят, чтобы у тебя всё лизано было. Если они найдут упоминание о таче или ещё каком управлении, которого на TV нет — пиши пропало. Отклонят так, что мало не покажется. Навигация должна быть идеальной, производительность — 60 fps, и ни одного лага.
Итог, ёпта: tvOS — это как разрабатывать под iOS, но одной рукой, сидя на вращающемся стуле. Всё другое: управление, интерфейсы, подход. Но если вьебешься и сделаешь качественно — получается очень крутая штука, которая на большом экране смотрится просто огонь.