tvOS - не удается подключиться к локальному хосту
Я тестирую некоторый код tvOS, и он отлично работает на симуляторе, однако на Dev Kit, работающем под управлением бета-версии 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 Код =-1004 "Не удалось подключиться к серверу." UserInfo={ _kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1, NSLocalizedDescription= Невозможно подключиться к серверу.}}, NSErrorFailingURLStringKey = http://localhost:9001/js/application.js, _kCFStreamKeyFirectory.dll подключиться к 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 ("Добро пожаловать в программирование на 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
NB: для параметра Разрешить произвольные нагрузки установлено значение ДА
2 ответа
Devkit - это еще один компьютер в вашей сети, и вы не можете разместить сервер JSTVML в самом комплекте. Вам нужно разместить его на внешнем сервере (в данном случае ваша машина разработки - это внешний сервер).
Убедитесь, что ваш devkit и компьютер для разработки находятся в одной сети.
Настройте свой js-код для доступа к компьютеру, указав IP-адрес.
Пример: http://192.168.1.21:9001/js/application.js
(делая вид, что 192.168.1.21
это IP-адрес вашего сервера разработки и 9001
это порт.)
Вы должны быть в состоянии проверить это, сначала зайдя в браузер (чтобы убедиться, что ваш компьютер для разработки возвращает .js
файл правильно).
Как только вы узнаете, что "сервер" работает, настройте свой javascript для доступа к этому удаленному местоположению.
Надеюсь это поможет.
Или Вы можете использовать Node.js
Прежде чем ты начнешь. Вы должны проверить эту документацию https://developer.apple.com/library/prerelease/tvos/documentation/General/Conceptual/AppleTV_PG/YourFirstAppleTVApp.html
Во-вторых. Все что тебе нужно. Вы можете найти шаблон проекта ниже по этой ссылке. https://developer.apple.com/library/prerelease/tvos/samplecode/TVMLCatalog/Introduction/Intro.html
Node.js
- Скопируйте шаблон рабочего стола этого проекта.
- CMD + пробел | открытый терминал
- sudo npm установить http-сервер -g
- cd / Users / "имя пользователя" / Desktop / tvOS / TVMLCatalogUsingTVMLTemplates
- http-сервер -p 7575
Хорошо, теперь вы должны обновить файл AppDelegate.swift.
**static let TVBaseURL = "http://localhost:7575/"**