Apple на прошлой неделе представила, среди прочего новый Apple TV с операционной системой tvOS. Тот факт, что в новый черный ящик можно устанавливать приложения из App Store, безусловно, очень порадовал разработчиков.
У разработчиков есть два варианта. Они могут написать собственное приложение, которое будет иметь полный доступ к оборудованию Apple TV. Доступный SDK (набор библиотек для разработчиков) очень похож на то, что разработчики уже знают по iPhone, iPad, а языки программирования те же — Objective-C и младший Swift.
Но для более простых приложений Apple предложила разработчикам второй вариант в виде TVML — Television Markup Language. Если вам кажется, что имя TVML подозрительно похоже на HTML, вы правы. На самом деле это язык разметки, основанный на XML и очень похожий на HTML, только он намного проще и имеет более строгий синтаксис. Но он идеально подходит для таких приложений, как Netflix. И пользователи тоже выиграют, потому что строгость TVML позволит мультимедийным приложениям выглядеть и работать практически одинаково.
Путь к первому приложению
Поэтому первое, что мне нужно было сделать, это загрузить новую бета-версию среды разработки Xcode (доступна версия 7.1). здесь). Это дало мне доступ к tvOS SDK и позволило начать новый проект, специально ориентированный на Apple TV четвертого поколения. Приложение может быть только для tvOS, либо код можно добавить в существующее приложение для iOS, чтобы создать «универсальное» приложение — модель, аналогичную сегодняшним приложениям для iPhone и iPad.
Проблема первая: Xcode предлагает только возможность создания собственного приложения. Но я очень быстро нашел в документации раздел, который поможет разработчикам изменить этот скелет и подготовить его для TVML. По сути, это несколько строк кода на Swift, которые прямо на Apple TV создают полноэкранный объект и загружают основную часть приложения, уже написанного на JavaScript.
Проблема вторая: приложения TVML действительно очень похожи на веб-страницу, а потому весь код также загружается из Интернета. Само приложение по сути является всего лишь «загрузчиком», оно содержит лишь минимум кода и самые основные графические элементы (иконка приложения и тому подобное). В конце концов я успешно поместил основной код JavaScript прямо в приложение и получил возможность, по крайней мере, отображать собственное сообщение об ошибке, когда Apple TV не подключен к Интернету.
Третья небольшая проблема: iOS 9 и вместе с ней tvOS строго требуют, чтобы все соединения с Интернетом происходили в зашифрованном виде через HTTPS. Эта функция, представленная в iOS 9 для всех приложений, вызвана давлением на конфиденциальность пользователей и безопасность данных. Поэтому необходимо будет развернуть SSL-сертификат на веб-сервере. Его можно приобрести всего за 5 долларов США (120 крон) в год или воспользоваться, например, сервисом CloudFlare, который позаботится о HTTPS сам, автоматически и без вложений. Второй вариант — отключить это ограничение для приложения, что пока возможно, но я бы его однозначно не рекомендовал.
После нескольких часов чтения документации, где все еще встречаются мелкие ошибки, я разработал очень простое, но работающее приложение. На нем отображался популярный текст «Hello World» и две кнопки. Я потратил около двух часов, пытаясь заставить кнопку стать активной и действительно что-то сделать. Но, учитывая раннее утро, я предпочёл пойти спать… и это было хорошо.
На днях мне пришла в голову блестящая идея загрузить готовый образец приложения TVML прямо с Apple. Я очень быстро нашел в коде то, что искал, и кнопка была жива и работала. Помимо прочего, я также нашел в Интернете первые две части руководства по tvOS. Оба ресурса очень помогли, поэтому я начал новый проект и запустил свое первое настоящее приложение.
Первое реальное применение
Я начал полностью с нуля, первую страницу TVML. Преимущество в том, что Apple подготовила для разработчиков 18 готовых шаблонов TVML, которые нужно просто скопировать из документации. Редактирование одного шаблона заняло около часа, в первую очередь потому, что я готовил наш API для отправки готового TVML со всеми необходимыми данными на Apple TV.
Второй шаблон занял всего около 10 минут. Я добавил два JavaScript-скрипта — большая часть кода в них исходит непосредственно от Apple, так зачем изобретать велосипед. Apple подготовила сценарии, обеспечивающие загрузку и отображение шаблонов TVML, включая рекомендуемый индикатор загрузки контента и отображение возможных ошибок.
Менее чем за два часа мне удалось собрать очень простое, но работающее приложение PLAY.CZ. Он может отображать список радиостанций, фильтровать его по жанрам и запускать радио. Да, многих вещей нет в приложении, но основы работают.
[youtube id="kLKvWC-rj7Q" ширина=”620″ высота=”360″]
Преимущество заключается в том, что приложение по сути представляет собой не что иное, как специальную версию веб-сайта, работающую на JavaScript, и вы также можете использовать CSS для изменения внешнего вида.
Apple все еще нужно подготовить еще кое-что. Значок приложения не один, а два — поменьше и покрупнее. Новизна в том, что иконка не является простым изображением, а содержит эффект параллакса и состоит из 2-5 слоев (фон, объекты в середине и на переднем плане). Все активные изображения в приложении могут содержать один и тот же эффект.
Каждый слой на самом деле представляет собой просто изображение на прозрачном фоне. Apple подготовила собственное приложение для компиляции этих многослойных изображений и обещает в ближайшее время выпустить плагин экспорта для Adobe Photoshop.
Еще одно требование — изображение «Верхняя полка». Если пользователь размещает приложение на видном месте в верхнем ряду (на верхней полке), приложение также должно предоставлять контент для рабочего стола над списком приложений. Это может быть как простая картинка, так и активная область, например со списком любимых фильмов или, в нашем случае, радиостанций.
Многие разработчики только начинают изучать возможности новой tvOS. Хорошей новостью является то, что написать контентное приложение очень легко, и Apple прошла долгий путь для разработчиков с помощью TVML. Создание приложения (например, PLAY.CZ или iVyszílő) должно быть простым и быстрым. Есть большая вероятность, что большое количество приложений будет готово одновременно с поступлением в продажу нового Apple TV.
Написать собственное приложение или портировать игру с iOS на tvOS будет сложнее, но ненамного. Самым большим препятствием будут различные элементы управления и ограничение в 200 МБ на одно приложение. Нативное приложение может скачать из магазина только ограниченную часть данных, а все остальное необходимо скачивать дополнительно, и нет никакой гарантии, что система не удалит эти данные. Однако разработчики наверняка быстро справятся с этим ограничением, в том числе благодаря наличию набора инструментов под названием «App Thinning», которые также являются частью iOS 9.
Хорошая статья. Спасибо. Возможно, со временем мы увидим от Apple также пользовательское решение для подготовки более простых приложений (решений), как это возможно с FileMaker для iOS, без того, чтобы я был разработчиком.
Теоретически… загрузчик Swift — это несколько строк, которые остались прежними, меняется только URL-адрес первого файла TVML. Если кто-то захочет, он, вероятно, сможет написать сценарий, который сможет удаленно запускать сборку с вашим URL-адресом и отправлять обратно файл IPA. Или, если у вас Mac, вы можете без проблем отправить проект, просто вставьте URL-адрес и запустите сборку. Преимущество состоит в том, что если TVML находится вне приложения, вам фактически понадобится только одна общедоступная сборка и, возможно, одна частная сборка (для разработки), и вы можете изменить TVML только на сервере и, следовательно, функционирование приложения.
«Приложение может быть только для tvOS, или код можно добавить в существующее приложение для iOS, чтобы создать универсальное приложение — модель, аналогичную сегодняшним приложениям для iPhone и iPad».
Интересно, что ты имеешь в виду? Лично я нигде не нашел способа сделать 1 сборку, которая будет включать в себя универсальный iPhone, iPad и Apple TV.. поскольку это отдельные SDK (похожие на OSX), вам нужна дополнительная цель для tvOS и, следовательно, тоже отдельная сборка. Я что-то упускаю?
в Xcode 7.1 приложения tvOS можно добавить в качестве еще одной цели в уже существующий проект — аналогично приложениям для Apple Watch или, возможно, виджету для центра уведомлений. Однако я пока не знаю, как он будет загружен в магазин... Предполагаю, что Xcode отправит один пакет, а App Store его потом разделит... Вероятно, аналогично тому, что сейчас делают с Watch
неет.. по моему это 2 совершенно разные вещи.. часы - это расширение.. или по крайней мере так было до watchOS 2.0.. оно поставлялось вместе с таргетом iOS и даже не работало без айфона.. ATV это отдельная сущность.. вот о чем я говорю, будет ли сборка для ATV отдельной (нужно доплатить 2$) и дополнительно iOS платная за 2$, или можно будет предоставить универсальный Сборка за 2 доллара как для iOS, так и для семейства ATV.
так что реальный запуск покажет, но на самом деле он ведет себя так же, как код Apple Watch, например. В противном случае в документации указано, что в существующее приложение можно будет добавить код для tvOS и таким образом можно будет продавать одно приложение (одну сущность в App Store) и для iOS, и для tvOS одновременно — одна покупка за заказчиком или как отдельная организация — отдельная покупка для iOS и для tvOS.
Просто чтобы уточнить: это не 200 МБ на приложение, а 200 МБ хранится локально, а остальное загружается из сети при необходимости.
Спасибо, я так и думал, но наверное неправильно выразился. Все, что превышает 200 МБ (или все дополнительно загруженное), сохраняется в виде кеша, и если система решает, что ей не хватает места, она начинает его удалять - чего, вероятно, не произойдет до тех пор, пока не будет достаточно свободного места, а затем наименее используемый контент. будет удален, так что на практике это, вероятно, не составит большой проблемы.
Что еще мне предстоит выяснить, якобы этот лимит не будет распространяться на игры, или игра может быть больше 200 МБ прямо у основания. Но я до сих пор не знаю точно, что именно это означает. Вполне возможно, что Apple еще корректирует эту политику согласно отзывам разработчиков.
хе-хе ККИ «Покемон» — 4 ГБ, «Заказ хаоса онлайн» — 1,6 ГБ Hearthstone 1,3 ГБ Мне это очень интересно.
была информация, что в играх есть специальный режим. Сейчас я сопоставляю детали, и мы завершим статью.
Я не могу этого сделать, и заранее прошу прощения, если кого-то обидел, но у меня просто огромная, искренняя и неподдельная радость, которой я хотел поделиться с вами...
На следующий день после анонса нового Apple TV я не поленился и подписался на лотерею Apple (выбирать?) с возможностью получить Developer Kit еще до того, как он поступит в продажу.
Вчера вечером Apple написала мне, что выбрала меня для первой партии :)
Итак, я не тот же автор этой статьи, и я честно работаю над Preschool Brasnicce для Apple TV, которая будет доступна в вашем App Store в октябре :)
так что у меня такое ощущение, что все, кто зарегистрировался, наверное, получили :) Я тоже вчера заказала и очень-очень жду... И знаю еще одного человека, который тоже ждет свою доставку...
В любом случае, пока кажется, что приложений, вероятно, будет много, когда начнутся продажи :)
У всех наверное нет - мне не дали :(
:( Мне жаль вас.
Если кто хочет, у меня есть восемь белых наклеек Apple… могу отправить по почте…