tvOS - 无法连接到本地主机

问题描述:

我测试了一些tvOS代码并在模拟器上但在开发套件上运行OS beta 2版本中我收到以下错误的伟大工程:tvOS - 无法连接到本地主机

2015年9月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:3​​4.887 RWDevCon [272:46267] ITML:未能加载启动网址,并显示以下错误:Error Domain = NSURLErrorDomain Code = -10 04“无法连接到本地”UserInfo = {NSUnderlyingError = 0x137d2dee0 {错误域= kCFErrorDomainCFNetwork代码= -1004“无法连接到服务器。”的UserInfo = {。_kCFStreamErrorCodeKey = 61,_kCFStreamErrorDomainKey = 1,NSLocalizedDescription =无法连接到服务器}},NSErrorFailingURLStringKey = http://localhost:9001/js/application.js,_kCFStreamErrorDomainKey = 1,_kCFStreamErrorCodeKey = 61,NSLocalizedDescription =无法连接到localhost}

Swift代码: 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警报= createAlert( “欢迎来到tvOS编程”, “这将是真棒!”); //用空字符串离开第二个参数 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

注:允许Arbitary加载设置为YES

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

请确保您的开发工具包和您的开发计算机位于同一网络上。

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

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

您应该能够首先在浏览器中访问测试了这一点(以确保您'开发计算机正确返回.js文件)。

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

希望这会有所帮助。

+0

它的工作原理! @Jason。非常感谢你的帮助。 – decipher21

+0

是否有可能从AppleTV本身而不是外部服务器提供JS/Template文件? –

+0

我不确定 - 如果我们可以“评估”本地资源,则可以。但是,我认为您不会获得远程托管的好处 - 例如轻松更新,因为您可以绕过AppStore审核流程。 –

或者您可以使用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. 须藤NPM安装HTTP服务器-g
  4. CD /用户/ “yourusername”/桌面/ tvOS/TVMLCatalogUsingTVMLTemplates
  5. HTTP服务器-p 7575

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

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