Profesjonalne szkolenia technologii Apple

TVML a kwestia serwera

Apple prezentując TVML i materiały edukacyjne związane z tą platformą wszędzie podkreśla, że TVML wymaga serwera, który będzie serwował treść i pliki javascript generujące szablony TVML. Prawda jest taka, że Javascript jest narzędziem działającym po stronie przeglądarki (a parser TVML w AppleTV tak trzeba traktować). Dodatkowo treść, którą chcemy przekształcić na TVML często już mamy serwowaną w innym formacie. Na przykład JSON. Czy zatem da się napisać aplikację, która zawiera w sobie całość potrzebnego kodu javascript i nie wymaga dodatkowych prac na serwerze?

Tak da się.

Dwie linie, które zainteresują nas już na początku zabawy z aplikacją TVML, to linie znajdujące się w pliku  AppDelegate.swift

static let tvBaseURL = "http://localhost:9001/"
static let tvBootURL = "\(AppDelegate.tvBaseURL)/application.js"

Linie te określają źródło danych. Źródło to wykorzystywane jest dalej w funkcji

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool

do załadowania odpowiedniego pliku javascript z sieci. Tymczasem można to łatwo zmienić. Przykładowe linie ustalające URL startowy wyglądają tam tak.

if let javaScriptURL = URL(string: AppDelegate.tvBootURL) {
   appControllerContext.javaScriptApplicationURL = javaScriptURL
}

Oczywiście URL może służyć do określenia dowolnego adresu (także lokalnego, zaczynającego się od file://). Dlatego dodamy teraz odpowiedni fragment kodu.

let javaScriptURL = Bundle.main.url(forResource: "application", withExtension: "js")
AppDelegate.tvBaseURL = javaScriptURL!.deletingLastPathComponent().absoluteString
AppDelegate.tvBootURL = "\(AppDelegate.tvBaseURL)/application.js"

Taka zmiana pozwala na określenie adresu lokalnego pliku application.js. Kod powinien zostać wykonany na początku funkcji uruchamianej razem z aplikacją. Oczywiście zmian wymaga również deklaracja stałych statycznych, które teraz powinny zostać zmiennymi.

Aplikacja po starcie określi odpowiednie adresy URL dla pliku appliaction.js oraz katalogu go zawierającego. Oczywiście powinniśmy zadbać również o to, żeby taki plik znalazł się w paczce z naszą aplikacją. A tego należy dokonać we właściwościach celu aplikacji, w zakładce Build Phases, w sekcji Copy Bundle Resources. Tam kliknąć przycisk + i wybrać plik js z listy. Oczywiście pozostałe pliki js, których chcemy używać również muszą być dołączone do paczki, na co należy zwrócić uwagę przy ich tworzeniu.

Ale czy warto?

Z założenia aplikacje na Apple TV mają serwować treść. Jeśli skrypty generujące ich zasoby będą umieszczone w paczce aplikacji, to ich uaktualnienie będzie wiązało się z przejściem procedury weryfikacyjnej. Jeśli natomiast cały javascript jest serwowany przez serwer, to mamy nieograniczoną kontrolę nad ekranami pojawiającymi się użytkownikom końcowym. Co jest ważniejsze? Zależy od konkretnego przypadku zastosowania aplikacji na najbardziej niedocenione urządzenie Apple.

 Źródło obrazu tytułowego:apple.com

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.