3

我正在测试一些 tvOS 代码,它在模拟器上运行良好,但是在运行 OS beta 2 的开发套件上,我收到以下错误:

2015-09-27 11:10:29.797 RWDevCon [272:46267] SSSQLiteDatabase:无法打开数据库,重置:[23,/var/mobile/Library/Cookies/com.apple.itunesstored.2.sqlitedb] _CFURLRequestCopyStorageSession 已于 2015 年弃用-09-27 11:10:29.810 RWDevCon [272:46267] ITML:设置 [1] 以忽略 HTTP 缓存 2015-09-27 11:10:34.886 RWDevCon [272:46267] ITML:设置 [3] 日志级别 2015 -09-27 11:10:34.887 RWDevCon[272:46267] ITML:无法加载启动 URL 并出现错误:错误域 = NSURLErrorDomain 代码 = -1004 “无法连接到本地主机” UserInfo = {NSUnderlyingError = 0x137d2dee0 {错误域 = kCFErrorDomainCFNetwork Code=-1004 “无法连接到服务器。” UserInfo={ _kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1, NSLocalizedDescription=无法连接到服务器。}}, NSErrorFailingURLStringKey=http://localhost:9001/js/application.js , _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, NSLocalizedDescription=无法连接到 localhost}

Swift 代码: 类 AppDelegate:UIResponder、UIApplicationDelegate、TVApplicationControllerDelegate { var window: UIWindow?

var appController: TVApplicationController? /
static let TVBaseURL = "http:/
static let TVBootURL = "\(AppDelegate.TVBaseURL)js/application.js" /

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {

    window = UIWindow(frame: UIScreen.mainScreen().bounds)

    /
    let appControllerContext = TVApplicationControllerContext()

    /
    guard let javaScriptURL = NSURL(string: AppDelegate.TVBootURL) else {
        fatalError("unable to create NSURL")
    }

    appControllerContext.javaScriptApplicationURL = javaScriptURL
    appControllerContext.launchOptions["BASEURL"] = AppDelegate.TVBaseURL

    /
    appController = TVApplicationController(context: appControllerContext, window: window, delegate: self)

    return true
}

}

**JavaScript/server code:**
App.onLaunch = function(options) {

// 1 var alert = createAlert("Welcome to tvOS Programming", "It will be Awesome!"); // 将第二个参数留为空字符串 navigationDocument.presentModal(alert); }

// 2
var createAlert = function(title, description) {

var alertString = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<alertTemplate>
<title>${title}</title>
<description>${description}</description>
<button><text>OK</text></button>
</alertTemplate>
</document>`

var parser = new DOMParser();
var alertDoc = parser.parseFromString(alertString, "application/xml");

return alertDoc

}

启动服务器:

python -m SimpleHTTPServer 9001

注意:允许任意负载设置为 YES

4

2 回答 2

4

devkit 是您网络上的另一台计算机,您不能在套件本身上托管 JSTVML 服务器。您需要将它托管在外部服务器上(在这种情况下,您的开发机器就是该外部服务器)。

确保您的 devkit 和您的开发计算机在同一个网络上。

通过指定 IP 地址设置您的 js 代码以访问您的计算机。

例如:(http://192.168.1.21:9001/js/application.js假装这192.168.1.21是您的开发服务器的 IP 地址并且9001是端口。)

您应该能够通过首先在浏览器中访问它来测试它(以确保您的开发计算机.js正确返回文件)。

一旦您知道“服务器”正在工作,请设置您的 javascript 以访问该远程位置。

希望这可以帮助。

于 2015-09-27T23:37:47.440 回答
0

或者您可以使用 Node.js

在你开始之前。您应该查看此文档https://developer.apple.com/library/prerelease/tvos/documentation/General/Conceptual/AppleTV_PG/YourFirstAppleTVApp.html#//apple_ref/doc/uid/TP40015241-CH3-SW1

第二。随便你想要什么。您可以在此链接下方找到模板项目。 https://developer.apple.com/library/prerelease/tvos/samplecode/TVMLCatalog/Introduction/Intro.html

节点.js

  1. 复制此项目的模板桌面。
  2. cmd + 空格 | 打开终端
  3. sudo npm install http-server -g
  4. cd /Users/"你的用户名"/Desktop/tvOS/TVMLCatalogUsingTVMLTemplates
  5. http服务器-p 7575

好的现在你应该更新 AppDelegate.swift 文件。

**static let TVBaseURL = "http://localhost:7575/"**
于 2015-12-01T17:17:12.437 回答