tvOS - 无法连接到localhost

时间:2015-09-27 20:59:32

标签: ios localhost tvos tvml

我正在测试一些tvOS代码,它在模拟器上工作得很好但是在运行OS beta 2的开发工具包上我收到以下错误:

2015-09-27 11:10:29.797 RWDevCon [272:46267] SSSQLiteDatabase:无法打开数据库,重置:[23,/ var / mobile / Library / Cake / com.apple.itunesstored.2.sqlitedb] 不推荐使用_CFURLRequestCopyStorageSession 2015-09-27 11:10:29.810 RWDevCon [272:46267] ITML:为忽略HTTP缓存设置[1] 2015-09-27 11:10:3​​4.886 RWDevCon [272:46267] ITML:设置[3]日志级别 2015-09-27 11:10:3​​4.887 RWDevCon [272:46267] ITML:无法加载启动URL并显示错误:错误Domain = NSURLErrorDomain Code = -1004“无法连接到localhost”UserInfo = {NSUnderlyingError = 0x137d2dee0 {Error Domain = kCFErrorDomainCFNetwork代码= -1004“无法连接到服务器”。 UserInfo = {_ kCFStreamErrorCodeKey = 61,_kCFStreamErrorDomainKey = 1,NSLocalizedDescription =无法连接到服务器。}},NSErrorFailingURLStringKey = http://localhost:9001/js/application.js,_ kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 61,NSLocalizedDescription =无法连接到localhost}

Swift Code: class 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(“欢迎来到tvOS编程”,“它会很棒!”); //将第二个参数留空字符串     navigationDocument.presentModal(警报); }

// 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

注意:允许Arbitary Loads设置为YES

2 个答案:

答案 0 :(得分:3)

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

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

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

Ex:http://192.168.1.21:9001/js/application.js(假装192.168.1.21是开发服务器的IP地址,9001是端口。)

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

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

希望这有帮助。

答案 1 :(得分: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

Node.js

  1. 复制此项目的模板桌面。
  2. cmd + space |开放式终端
  3. sudo npm install http-server -g
  4. cd / Users /&#34; yourusername&#34; / Desktop / tvOS / TVMLCatalogUsingTVMLTemplates
  5. http-server -p 7575
  6. ok现在你应该更新AppDelegate.swift文件。

    **static let TVBaseURL = "http://localhost:7575/"**