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 приложенията наистина приличат много на уеб страница и следователно целият код се зарежда от интернет. Самото приложение всъщност е просто "bootloader", то съдържа само минимум код и най-основните графични елементи (икона на приложението и други подобни). В крайна сметка успешно поставих основния код на 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 MB за приложение. Родното приложение може да изтегли само ограничена част от данните от магазина, а всичко останало трябва да се изтегли допълнително и няма гаранция, че системата няма да изтрие тези данни. Разработчиците обаче със сигурност ще се справят с това ограничение бързо, също благодарение на наличието на набор от инструменти, наречени „App Thinning“, които също са част от iOS 9.
Хубава статия. Благодаря. Може би след време ще видим от Apple и потребителско решение за подготовка на по-прости приложения (решения), както е възможно с FileMaker за iOS, без аз да съм разработчик.
На теория... Swift loader е няколко реда, които са все същите, само 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.
Само за пояснение, не са 200MB на приложение, а 200MB се съхраняват локално, а останалите се изтеглят от мрежата, когато е необходимо
Благодаря, така си помислих, но вероятно съм се изразил грешно. Всичко над 200MB (или всичко допълнително изтеглено) се съхранява като кеш и ако системата реши, че мястото му свършва, започва да го изтрива - което вероятно няма да се случи, докато няма достатъчно свободно място и след това най-малко използваното съдържание ще бъде изтрит, така че на практика вероятно няма да е голям проблем.
Какво друго трябва да разбера, уж това ограничение няма да важи за игри, или играта може да бъде по-голяма от 200MB точно в основата. Но все още не знам как точно се има предвид това. Напълно възможно е Apple все още да коригира тази политика според отзивите на разработчиците.
хехе Pokemon TCG – 4 GB, Поръчай хаос онлайн – 1,6 GB Hearthstone 1,3 GB Наистина съм любопитен за това.
имаше информация, че игрите имат специален режим. Сега събирам подробностите и ще допълним статията.
Не мога да го направя и се извинявам предварително, ако обидя някого, но просто изпитвам огромна, искрена и неподправена радост, която исках да споделя с вас...
В деня след обявяването на новия Apple TV не бях мързелив и се регистрирах за лотарията на Apple (да избера ли?) С възможност за получаване на комплект за разработчици дори преди да бъде пуснат в продажба.
Вчера вечерта Apple ми писа, че ме е избрала за първата партида :)
Така че аз не съм същият като автора на тази статия и честно казано работя върху Preschool Brasnicce за Apple TV - наличен във вашия App Store през октомври :)
така че имам чувството, че всички, които са се регистрирали, вероятно са го получили :) Аз също поръчах вчера и наистина го очаквам с нетърпение... И познавам още един човек, който също чака доставката си...
Както и да е, засега изглежда, че вероятно ще има много приложения, когато започнат продажбите :)
Сигурно не всички - не са ми го дали :(
:( Жал ми е за вас.
Ако някой желае, имам осем бели стикера на Apple… мога да ги изпратя по пощата…