2015-09-27 260 views
2

我測試了一些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

回答

3

的的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審覈流程。 –

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. 須藤NPM安裝HTTP服務器-g
  4. CD /用戶/ 「yourusername」/桌面/ tvOS/TVMLCatalogUsingTVMLTemplates
  5. HTTP服務器-p 7575

現在好了喲應該更新的AppDelegate .swift文件。

**static let TVBaseURL = "http://localhost:7575/"** 
相關問題