Опыт разработки приложений для tvOS

Ответ

Да, есть опыт создания приложений для 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, но одной рукой, сидя на вращающемся стуле. Всё другое: управление, интерфейсы, подход. Но если вьебешься и сделаешь качественно — получается очень крутая штука, которая на большом экране смотрится просто огонь.