tvostvos入门


备注

本节概述了tvos是什么,以及开发人员为什么要使用它。

它还应该提到tvos中的任何大型主题,并链接到相关主题。由于tvos的文档是新的,您可能需要创建这些相关主题的初始版本。

TVML应用示例

对于启动tvOS,我认为必须具备swift和iOS应用程序的知识。可以从Apple参考文档开始阅读文章。

有两种类型的电视应用程序,我们可以创建一个是传统的应用程序,即在xcode代码中创建将类似于我们在iOS应用程序中。

这里我们以其他类型的电视应用程序为例,称为客户端服务器应用程序

[![在此处输入图片说明] [2]] [2]

要构建客户端 - 服务器应用程序:

  1. 打开Xcode并创建一个新项目。

  2. 从tvOS中选择Single View Application模板。 在此处输入图像描述

  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>