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>