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” width=”620″ height=”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 абсолютно різні речі.. watch — це розширення.. або, принаймні, так було до watchOS 2.0.. він був наданий разом із iOS target і навіть не працював без iPhone.. ATV - це окрема сутність.. ось про що я говорю, чи буде збірка для ATV окремо (потрібно платити 2$) і додатково iOS платить 2$, чи можна буде надати універсальний Збірка за 2$ для iOS і ATV. Сімейство для ATV..
тому реальний запуск буде показаний, але насправді він поводиться так само, як код Apple Watch, наприклад. В іншому випадку в документації зазначено, що можна буде додати код для tvOS до існуючої програми, і таким чином можна буде продавати одну програму (один об’єкт в App Store) для iOS і tvOS одночасно – одну покупку для замовника, або як окрема сутність - окрема покупка для iOS і для tvOS.
Щоб уточнити, це не 200 МБ на програму, а 200 МБ, які зберігаються локально, а решта завантажується з мережі за потреби
Дякую, я так і думав, але напевно неправильно сформулював. Все, що перевищує 200 МБ (або все, що додатково завантажено), зберігається як кеш, і якщо система вирішить, що місце закінчилося, вона починає його видаляти – що, ймовірно, не відбудеться, поки не буде достатньо вільного місця, а потім найменш використовуваний вміст буде видалено, тому на практиці це, ймовірно, не буде великою проблемою.
Що ще я маю дізнатися, нібито це обмеження не поширюватиметься на ігри, або гра може бути більшою за 200 Мб безпосередньо в основі. Але я досі точно не знаю, як це саме мається на увазі. Цілком можливо, що Apple все ще коригує цю політику відповідно до відгуків розробників.
хе-хе Pokemon TCG – 4 ГБ, Order chaos online – 1,6 ГБ Hearthstone 1,3 ГБ Мені справді цікаво.
була інформація, що в іграх є спеціальний режим. Зараз я збираю деталі, і ми завершимо статтю.
Я не можу цього зробити, і заздалегідь прошу вибачення, якщо когось образив, але у мене просто величезна, щира і непідробна радість, якою я хотів поділитися з вами...
На наступний день після анонсу нового Apple TV я не полінувався і зареєструвався в лотереї Apple (вибирати?) з можливістю отримати Developer Kit ще до його надходження в продаж.
Вчора ввечері Apple написала мені, що вибрала мене для першої партії :)
Отже, я не такий самий, як автор цієї статті, і я чесно працюю над Preschool Brasnicce для Apple TV - доступним у вашому App Store протягом жовтня :)
тому в мене таке відчуття, що всі, хто зареєструвався, напевно отримали :) Я теж вчора замовляв і дуже, дуже чекаю цього... І я знаю ще одну людину, яка також чекає на свою доставку...
У будь-якому випадку, поки що здається, що, ймовірно, буде багато додатків, коли почнуться продажі :)
Всі, мабуть, ні - мені не дали :(
:( Мені шкода вас.
Якщо хтось хоче, у мене є вісім білих наклейок Apple… Я можу надіслати їх поштою…