TVML 應用示例

對於啟動 tvOS,我認為必須具備 swift 和 iOS 應用程式的知識。可以從 Apple 參考文件開始閱讀文章。

有兩種型別的電視應用程式,我們可以建立一個是傳統的應用程式,即在 xcode 程式碼中建立將類似於我們在 iOS 應用程式中。

這裡我們以其他型別的電視應用程式為例,稱為客戶端伺服器應用程式

[![在此處輸入圖片說明] [2]] [2]

要構建客戶端 - 伺服器應用程式:

  1. 開啟 Xcode 並建立一個新專案。

  2. 從 tvOS 中選擇 Single View Application 模板。 StackOverflow 文件

  3. 刪除檢視控制器檔案和應用程式的主故事板。

  4. 開啟 info.plist 檔案並刪除主故事板檔案基本名稱條目。

注意要設定網路安全性,請參閱[NSAppTransportSecurity] [3]。

  1. 對 AppDelegate.swift 檔案進行以下更改:
    • 新增匯入 TVMLKit。
    • 將類宣告更改為 AppDelegate 類:UIResponder,UIApplicationDelegate,TVApplicationControllerDelegate {。將以下全域性變數新增到你的類:var appController:TVApplicationController?
    • 修改應用程式: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
        appControllerContext.launchOptions["BASEURL"] = TVBaseURL
        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
    }

上面示例中的程式碼載入一個 JavaScript 檔案,然後載入一個 TVML 頁面並將其顯示在模擬器或電視螢幕上,如果新的 Apple TV 連線到你的計算機。有關 JavaScript 類的更多資訊,請參閱 Apple TV JavaScript Framework Reference。

清單 2-1 中的 JavaScript 載入了一個 TVML 頁面(清單 2-2),該頁面顯示一個警告,詢問使用者是否要升級到應用程式的高階版本。載入頁面後,將其推送到導航堆疊然後作業系統將其顯示給使用者。有關可用 TVML 模板和元素的更多資訊,請參閱 Apple TV 標記語言參考。

清單 2-1 將 TVML 頁面推送到導航堆疊

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');
}

清單 2-2A TVML 頁面顯示警報

<document>
   <alertTemplate>
      <title>Update to premium</title>
      <description>Go ad free by updating to the premium version</description>
      <button>
         <text>Update Now</text>
      </button>
      <button>
         <text>Cancel</text>
      </button>
   </alertTemplate>
</document>