tvOS - 无法连接到本地主机
tvOS - Cannot connect to localhost
我正在测试一些 tvOS 代码,它在模拟器上运行良好,但是在 Dev Kit 运行 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:忽略 HTTP 缓存的设置 [1]
2015-09-27 11:10:34.886 RWDevCon[272:46267] ITML:设置 [3] 日志级别
2015-09-27 11:10:34.887 RWDevCon[272:46267] ITML:加载启动失败 URL 错误:错误域=NSURL错误域代码=-1004 "Cannot connect to localhost" UserInfo={NSUnderlyingError=0x137d2dee0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "Could not connect to the server." UserInfo={ _kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1, NSLocalizedDescription=无法连接到服务器。}}, NSErrorFailingURL StringKey=http://localhost:9001/js/application.js, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, NSLocalizedDescription=无法连接到本地主机}
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 alert = createAlert("Welcome to tvOS Programming", "It will be Awesome!"); // 将第二个参数保留为空字符串
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
注意:允许任意加载设置为是
devkit 是您网络上的另一台计算机,您不能在该工具包本身上托管 JSTVML 服务器。您需要将其托管在外部服务器上(在这种情况下,您的开发机器就是该外部服务器)。
确保您的 devkit 和您的开发计算机在同一个网络上。
设置您的 js 代码以通过指定 IP 地址访问您的计算机。
例如:http://192.168.1.21:9001/js/application.js
(假设192.168.1.21
是你开发服务器的ip地址,9001
是端口。)
您应该能够通过首先在浏览器中访问它来测试它(以确保您的开发计算机正确返回 .js
文件)。
一旦您知道 'server' 正在工作,请设置您的 javascript 以访问该远程位置。
希望对您有所帮助。
或者您可以使用 Node.js
第二。无论你需要什么。您可以在这个 link 下面找到模板项目。
https://developer.apple.com/library/prerelease/tvos/samplecode/TVMLCatalog/Introduction/Intro.html
Node.js
- 复制此项目的模板桌面。
- cmd + space |打开终端
- sudo npm install http-server -g
- cd /用户/"yourusername"/Desktop/tvOS/TVMLCatalogUsingTVMLTemplates
- http-server -p 7575
ok 现在你应该更新 AppDelegate.swift 文件。
**static let TVBaseURL = "http://localhost:7575/"**
我正在测试一些 tvOS 代码,它在模拟器上运行良好,但是在 Dev Kit 运行 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:忽略 HTTP 缓存的设置 [1] 2015-09-27 11:10:34.886 RWDevCon[272:46267] ITML:设置 [3] 日志级别 2015-09-27 11:10:34.887 RWDevCon[272:46267] ITML:加载启动失败 URL 错误:错误域=NSURL错误域代码=-1004 "Cannot connect to localhost" UserInfo={NSUnderlyingError=0x137d2dee0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "Could not connect to the server." UserInfo={ _kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1, NSLocalizedDescription=无法连接到服务器。}}, NSErrorFailingURL StringKey=http://localhost:9001/js/application.js, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, NSLocalizedDescription=无法连接到本地主机}
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 alert = createAlert("Welcome to tvOS Programming", "It will be Awesome!"); // 将第二个参数保留为空字符串 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
注意:允许任意加载设置为是
devkit 是您网络上的另一台计算机,您不能在该工具包本身上托管 JSTVML 服务器。您需要将其托管在外部服务器上(在这种情况下,您的开发机器就是该外部服务器)。
确保您的 devkit 和您的开发计算机在同一个网络上。
设置您的 js 代码以通过指定 IP 地址访问您的计算机。
例如:http://192.168.1.21:9001/js/application.js
(假设192.168.1.21
是你开发服务器的ip地址,9001
是端口。)
您应该能够通过首先在浏览器中访问它来测试它(以确保您的开发计算机正确返回 .js
文件)。
一旦您知道 'server' 正在工作,请设置您的 javascript 以访问该远程位置。
希望对您有所帮助。
或者您可以使用 Node.js
第二。无论你需要什么。您可以在这个 link 下面找到模板项目。 https://developer.apple.com/library/prerelease/tvos/samplecode/TVMLCatalog/Introduction/Intro.html
Node.js
- 复制此项目的模板桌面。
- cmd + space |打开终端
- sudo npm install http-server -g
- cd /用户/"yourusername"/Desktop/tvOS/TVMLCatalogUsingTVMLTemplates
- http-server -p 7575
ok 现在你应该更新 AppDelegate.swift 文件。
**static let TVBaseURL = "http://localhost:7575/"**