|
1.jpg (27.74 KB, 下載次數(shù): 8)
下載附件
保存到相冊
2015-12-2 10:00 上傳
創(chuàng)建C-S應(yīng)用程序(Creating a Client-Server App )
C-S應(yīng)用跟其他應(yīng)用在使用JavaScript和TVML上略有不同。Xcode應(yīng)用的主要功能是訪問一個主JavaScript文件,然后展示由TVML文件創(chuàng)建的頁面到屏幕上。
圖2-1表示出C-S模型
2.jpg (27.64 KB, 下載次數(shù): 3)
下載附件
保存到相冊
2015-12-2 10:00 上傳
JavaScript文件加載TVML頁,并將每一頁推到導(dǎo)航堆棧上。當(dāng)用戶瀏覽你的應(yīng)用程序,TVML頁在導(dǎo)航堆棧上入棧和出棧。用戶關(guān)閉你的應(yīng)用程序后,Apple TV首屏幕將出現(xiàn)。圖2-2顯示了一個基本的應(yīng)用程序流程。
圖 2-2C/S 應(yīng)用程序流
3.jpg (35.06 KB, 下載次數(shù): 4)
下載附件
保存到相冊
2015-12-2 10:00 上傳
構(gòu)建C/S應(yīng)用程序:
注:更多關(guān)于設(shè)置網(wǎng)絡(luò)安全的信息,查看App Transport Security Technote.
5. 對AppDelegate.swift 進行如下修改:
加入引用TVMLKit 修改類描述為class AppDelegate: UIResponder, UIApplicationDelegate, TVApplicationControllerDelegate {. 加入在你的class中加入如下全局變量:var appController: TVApplicationController? 根據(jù)如下修改application:dIDFinishLaunchingWithOptions:
func?application(application:?UIApplication,?dIDFinishLaunchingWithOptions?launchOptions:?[NSObject:?AnyObject]?)?->?Bool?{????self.window?=?UIWindow(frame:?UIScreen.mainScreen.bounds)????????let?appControllerContext?=?TVApplicationControllerContext????????let?javascriptURL?=?NSURL(string:?"Enter?path?to?your?JavaScript?file?here")????????appControllerContext.javaScriptApplicationURL?=?javascriptURL!????if?let?options?=?launchOptions?{????????for?(kind,?value)?in?options?{????????????if?let?kindStr?=?kind?as??String?{????????????????appControllerContext.launchOptions[kindStr]?=?value????????????}????????}????}????????self.appController?=?TVApplicationController(context:?appControllerContext,?window:?self.window,?delegate:?self)????????return?true}當(dāng)一臺蘋果電視連接到你的計算機時,你可以通過上面例子加載一個TVML頁面并顯示在模擬器或在電視屏幕上。關(guān)于JavaScript類的更多信息,參見 TVJS Framework Reference.
Listing 2-1中 JavaScript 加載了一個詢問用戶是否想要更新APP高級版本的提示框的 TVML 頁面,(Listing 2-2) 。頁面加載完成后被推到導(dǎo)航棧上,然后操作系統(tǒng)展示給用戶。關(guān)于 TVML 模板和元素的更多信息,請查看Apple TV Markup Language Reference.
Listing 2-1 將 TVML 頁面推到導(dǎo)航棧上
function?getDocument(url)?{????var?templateXHR?=?new?XMLHttpRequest;????templateXHR.responseType?=?"document";????templateXHR.addEventListener("load",?function?{pushDoc(templateXHR.responseXML);},?false);????templateXHR.open("GET",?url,?true);????templateXHR.send;????return?templateXHR;}?function?pushDoc(document)?{????navigationDocument.pushDocument(document);}?App.onLaunch?=?function(options)?{????var?templateURL?=?'Enter?path?to?your?server?here/alertTemplate.tvml';????getDocument(templateURL);}?App.onExit?=?function?{????console.log('App?finished');}Listing 2-2 展示提示框的 TVML頁面
4.jpg (18.9 KB, 下載次數(shù): 4)
下載附件
保存到相冊
2015-12-2 10:00 上傳
重要
當(dāng)從web服務(wù)器上訪問JavaScript和XML文件時,你通常需要確保頁面上的任何更改對于client app來說都是可見的。這樣你的服務(wù)器就必須確保client不會緩存任何頁面。當(dāng)服務(wù)器響應(yīng)不應(yīng)緩存的頁面的HTTP請求時,服務(wù)器應(yīng)當(dāng)在HTTP響應(yīng)頭文件中包含Cache-Control:no-cache.
|
上一篇: Apple TV3連接電視無信號下一篇: Apple TV編程指南——資源管理
|