Apple w zeszłym tygodniu zaprezentowało m.in nowego Apple TV z systemem operacyjnym tvOS. Największą radość twórców z pewnością sprawił fakt, że w nowej czarnej skrzynce można zainstalować aplikacje z App Store.
Deweloperzy mają dwie możliwości. Mogą napisać natywną aplikację, która będzie miała pełny dostęp do sprzętu Apple TV. Dostępny SDK (zestaw bibliotek dla programistów) jest bardzo podobny do tego, co programiści znają już z iPhone'a, iPada, a języki programowania są takie same - Objective-C i młodszy Swift.
Jednak w przypadku prostszych aplikacji Apple zaoferował programistom drugą opcję w postaci TVML - Television Markup Language. Jeśli uważasz, że nazwa TVML podejrzanie przypomina HTML, masz rację. Jest to tak naprawdę język znaczników oparty na XML i bardzo podobny do HTML, tyle że jest znacznie prostszy i ma bardziej rygorystyczną składnię. Ale jest absolutnie idealny do aplikacji takich jak Netflix. Użytkownicy również na tym skorzystają, ponieważ rygorystyczność TVML sprawi, że aplikacje multimedialne będą wyglądać i działać tak samo.
Ścieżka do pierwszej aplikacji
Pierwszą rzeczą, którą musiałem zrobić, było pobranie nowej wersji beta środowiska programistycznego Xcode (dostępna jest wersja 7.1 tutaj). Dzięki temu uzyskałem dostęp do zestawu SDK systemu tvOS i mogłem rozpocząć nowy projekt ukierunkowany specjalnie na Apple TV czwartej generacji. Aplikacja może działać tylko na tvOS lub kod można dodać do istniejącej aplikacji na iOS, aby stworzyć „uniwersalną” aplikację – model podobny do dzisiejszych aplikacji na iPhone'a i iPada.
Problem pierwszy: Xcode oferuje jedynie możliwość tworzenia aplikacji natywnej. Ale bardzo szybko znalazłem sekcję w dokumentacji, która pomoże programistom zmienić ten szkielet i przygotować go dla TVML. Zasadniczo jest to kilka linii kodu w Swift, które bezpośrednio na Apple TV tworzą obiekt pełnoekranowy i ładują główną część aplikacji, która jest już napisana w JavaScript.
Problem drugi: aplikacje TVML są naprawdę bardzo podobne do strony internetowej, dlatego też cały kod jest również ładowany z Internetu. Sama aplikacja to właściwie tylko „bootloader”, zawiera jedynie minimum kodu i najbardziej podstawowe elementy graficzne (ikonę aplikacji i tym podobne). Ostatecznie udało mi się umieścić główny kod JavaScript bezpośrednio w aplikacji i uzyskać możliwość przynajmniej wyświetlenia niestandardowego komunikatu o błędzie, gdy Apple TV nie jest podłączony do Internetu.
Trzeci mały problem: iOS 9, a wraz z nim tvOS, rygorystycznie wymagają, aby cała komunikacja z Internetem odbywała się w sposób szyfrowany za pośrednictwem protokołu HTTPS. Jest to funkcja wprowadzona w iOS 9 dla wszystkich aplikacji, a jej powodem jest presja na prywatność użytkowników i bezpieczeństwo danych. Konieczne będzie więc wdrożenie certyfikatu SSL na serwerze WWW. Można go kupić już za 5 dolarów (120 koron) rocznie lub można skorzystać np. z usługi CloudFlare, która sama, automatycznie i bez inwestycji, zajmie się HTTPS. Drugą opcją jest wyłączenie tego ograniczenia dla aplikacji, co na razie jest możliwe, ale zdecydowanie tego nie polecam.
Po kilku godzinach czytania dokumentacji, w której wciąż zdarzają się drobne błędy, opracowałem bardzo prostą, ale działającą aplikację. Wyświetlał popularny tekst „Hello World” i dwa przyciski. Spędziłem około dwóch godzin, próbując aktywować przycisk i faktycznie coś zrobić. Ale biorąc pod uwagę wczesną porę, wolałem iść spać… i to było dobre.
Któregoś dnia wpadłem na genialny pomysł, aby pobrać gotową przykładową aplikację TVML bezpośrednio od Apple. Bardzo szybko znalazłem w kodzie to, czego szukałem, a przycisk był aktywny i działał. Między innymi odkryłem w Internecie także dwie pierwsze części tutoriala dotyczącego tvOS. Obydwa zasoby bardzo mi pomogły, więc rozpocząłem nowy projekt i uruchomiłem moją pierwszą prawdziwą aplikację.
Pierwsza prawdziwa aplikacja
Zacząłem zupełnie od zera, od pierwszej strony TVML. Zaletą jest to, że Apple przygotowało dla programistów 18 gotowych szablonów TVML, które wystarczy skopiować z dokumentacji. Edycja jednego szablonu zajęła około godziny, głównie dlatego, że przygotowywałem nasze API do przesłania gotowego TVML ze wszystkimi niezbędnymi danymi do Apple TV.
Drugi szablon zajął tylko około 10 minut. Dodałem dwa skrypty JavaScript — większość zawartego w nich kodu pochodzi bezpośrednio od Apple, więc po co wymyślać koło na nowo. Apple przygotowało skrypty, które dbają o ładowanie i wyświetlanie szablonów TVML, w tym o zalecany wskaźnik ładowania treści i wyświetlanie ewentualnych błędów.
W niecałe dwie godziny udało mi się stworzyć bardzo gołą, ale działającą aplikację PLAY.CZ. Może wyświetlić listę stacji radiowych, może filtrować ją według gatunku i może uruchomić radio. Tak, wielu rzeczy nie ma w aplikacji, ale podstawy działają.
[youtube id=”kLKvWC-rj7Q” szerokość=”620″ wysokość=”360″]
Zaletą jest to, że aplikacja to w zasadzie nic innego jak specjalna wersja strony internetowej, która działa w oparciu o JavaScript i można także modyfikować jej wygląd za pomocą CSS.
Apple potrzebuje jeszcze kilku rzeczy do przygotowania. Ikona aplikacji to nie jedna, ale dwie – mniejsza i większa. Nowością jest to, że ikona nie jest prostym obrazem, ale zawiera efekt paralaksy i składa się z 2 do 5 warstw (tło, obiekty na środku i na pierwszym planie). Wszystkie aktywne obrazy w aplikacji mogą zawierać ten sam efekt.
Każda warstwa to właściwie tylko obraz na przezroczystym tle. Apple przygotowało własną aplikację do kompilacji tych warstwowych obrazów i obiecuje wkrótce udostępnić wtyczkę eksportującą do programu Adobe Photoshop.
Kolejnym wymogiem jest wizerunek „z najwyższej półki”. Jeśli użytkownik umieści aplikację w widocznym miejscu w górnym rzędzie (na najwyższej półce), aplikacja musi także udostępniać zawartość na komputer nad listą aplikacji. Może to być albo zwykły obrazek, albo może to być obszar aktywny, na przykład z listą ulubionych filmów lub, w naszym przypadku, stacji radiowych.
Wielu programistów dopiero zaczyna odkrywać możliwości nowego tvOS. Dobra wiadomość jest taka, że pisanie aplikacji obsługującej treści jest bardzo łatwe, a firma Apple przeszła długą drogę dla programistów dzięki TVML. Budowa aplikacji (np. PLAY.CZ lub iVyszílő) powinna być łatwa i szybka. Jest duża szansa, że w momencie pojawienia się w sprzedaży nowego Apple TV duża liczba aplikacji będzie gotowa.
Napisanie aplikacji natywnej lub przeniesienie gry z iOS na tvOS będzie większym wyzwaniem, ale nie większym. Największą przeszkodą będą różne elementy sterujące i limit 200 MB na aplikację. Aplikacja natywna może pobrać tylko ograniczoną część danych ze sklepu, a całą resztę trzeba pobrać dodatkowo i nie ma gwarancji, że system tych danych nie usunie. Jednak programiści z pewnością szybko poradzą sobie z tym ograniczeniem, także dzięki dostępności zestawu narzędzi o nazwie „App Thinning”, które również wchodzą w skład iOS 9.
Niezły artykuł. Dzięki. Być może z czasem zobaczymy od Apple także rozwiązanie dla użytkownika umożliwiające przygotowanie prostszych aplikacji (rozwiązań), tak jak jest to możliwe w przypadku FileMaker na iOS, bez konieczności bycia programistą.
Teoretycznie… moduł ładujący Swift to kilka linijek, które są wciąż takie same, zmienia się jedynie adres URL pierwszego pliku TVML. Jeśli ktoś chce, prawdopodobnie może napisać skrypt, który będzie mógł zdalnie uruchomić kompilację z Twoim adresem URL i odesłać plik IPA. Lub jeśli masz komputer Mac, nie ma problemu z wysłaniem projektu, w którym wystarczy umieścić adres URL i rozpocząć kompilację. Zaletą jest to, że jeśli TVML znajduje się poza aplikacją, tak naprawdę potrzebujesz tylko jednej kompilacji publicznej i ewentualnie jednej kompilacji prywatnej (programistycznej), a możesz zmienić tylko TVML na serwerze, a tym samym funkcjonowanie aplikacji.
„Aplikacja może być przeznaczona wyłącznie dla systemu tvOS lub kod można dodać do istniejącej aplikacji na iOS, aby utworzyć aplikację uniwersalną – model podobny do dzisiejszych aplikacji na iPhone'a i iPada”.
Zastanawiam się, co masz na myśli? Osobiście nie znalazłem nigdzie sposobu na stworzenie 1 kompilacji, która będzie zawierała uniwersalnego iPhone'a, iPada i Apple TV.. Ponieważ są to oddzielne SDK (podobnie jak OSX), potrzebujesz dodatkowego celu dla tvOS, a zatem także osobnej kompilacji. Brakuje mi czegoś?
w Xcode 7.1 aplikacje tvOS można dodać jako kolejny cel do już istniejącego projektu - podobnie jak aplikacje na Apple Watch czy być może widget do centrum powiadomień. Jednak jeszcze nie wiem jak zostanie wrzucony do sklepu... Zakładam, że Xcode wyśle jedną paczkę, a App Store ją potem podzieli... Pewnie podobnie jak to robią teraz z Watchem
nie.. moim zdaniem to są 2 zupełnie różne rzeczy.. zegarek jest rozszerzeniem.. a przynajmniej tak było do wersji watchOS 2.0.. był dawany razem z systemem iOS i nie działał nawet bez iPhone'a.. ATV to oddzielny byt.. właśnie o to mi chodzi, czy build na ATV będzie osobny (trzeba zapłacić za 2$) i dodatkowo iOS zapłacony za 2$, czy też będzie możliwość nadania uniwersalnego Kompilacja za 2 $ zarówno dla iOS, jak i ATV. Rodzina dla ATV..
więc pokaże się prawdziwe uruchomienie, ale tak naprawdę zachowuje się tak samo, jak na przykład kod Apple Watch. W przeciwnym wypadku w dokumentacji jest napisane, że do istniejącej aplikacji będzie można dodać kod dla tvOS i tym samym będzie można sprzedać jedną aplikację (jeden podmiot w App Store) jednocześnie na iOS i tvOS – jeden zakup za Klientem lub jako odrębny podmiot – odrębny zakup na iOS i na tvOS.
Gwoli wyjaśnienia, nie jest to 200 MB na aplikację, ale 200 MB przechowywane lokalnie, a resztę pobieraną z sieci w razie potrzeby
Dziękuję, tak właśnie myślałem, ale pewnie źle to sformułowałem. Wszystko powyżej 200 MB (lub wszystko dodatkowo pobrane) jest przechowywane jako pamięć podręczna i jeśli system uzna, że kończy się miejsce, zaczyna to usuwać - co prawdopodobnie nie nastąpi, dopóki nie będzie wystarczającej ilości wolnego miejsca, a następnie najrzadziej używanej zawartości zostaną usunięte, więc w praktyce prawdopodobnie nie będzie to stanowić większego problemu.
Czego jeszcze muszę się dowiedzieć, podobno ten limit nie będzie dotyczył gier, lub gra może być większa niż 200MB w samym miejscu bazowym. Ale nadal nie wiem, jak dokładnie to rozumieć. Jest całkiem możliwe, że Apple nadal dostosowuje tę politykę zgodnie z opiniami programistów.
hehe Pokemon TCG – 4 GB, Zamów chaos online – 1,6 GB Hearthstone 1,3 GB Bardzo mnie tego ciekawi.
pojawiła się informacja, że gry mają specjalny tryb. Już kompletuję szczegóły i kończymy artykuł.
Nie mogę tego zrobić i z góry przepraszam jeśli kogoś uraziłam, ale po prostu mam ogromną, szczerą i autentyczną radość, którą chciałam się z Wami podzielić...
Dzień po zapowiedzi nowego Apple TV nie próżnowałem i zapisałem się na loterię Apple (wybrać?) z możliwością zdobycia Zestawu Developer Kit jeszcze zanim trafi on do sprzedaży.
Wczoraj wieczorem Apple napisało do mnie, że wybrało mnie do pierwszej partii :)
Nie jestem więc tym samym, co autor tego artykułu i szczerze pracuję nad Preschool Brasnicce na Apple TV - dostępnym w Waszym App Store w październiku :)
więc mam przeczucie, że wszyscy zarejestrowani pewnie dostali :) Ja też wczoraj zamówiłam i bardzo, bardzo nie mogę się doczekać... A znam jeszcze jedną osobę, która też czeka na swoją dostawę...
Tak czy inaczej, na razie wygląda na to, że aplikacji będzie sporo, gdy ruszy sprzedaż :)
Pewnie nie wszyscy - mi tego nie dali :(
:( Szkoda mi Ciebie.
Jakby ktoś chciał to mam osiem białych naklejek Apple… mogę wysłać pocztą…