TVML 应用示例
对于启动 tvOS,我认为必须具备 swift 和 iOS 应用程序的知识。可以从 Apple 参考文档开始阅读文章。
有两种类型的电视应用程序,我们可以创建一个是传统的应用程序,即在 xcode 代码中创建将类似于我们在 iOS 应用程序中。
这里我们以其他类型的电视应用程序为例,称为客户端服务器应用程序
[![在此处输入图片说明] [2]] [2]
要构建客户端 - 服务器应用程序:
-
打开 Xcode 并创建一个新项目。
-
从 tvOS 中选择 Single View Application 模板。
-
删除视图控制器文件和应用程序的主故事板。
-
打开 info.plist 文件并删除主故事板文件基本名称条目。
注意要设置网络安全性,请参阅[NSAppTransportSecurity] [3]。
- 对 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>