私はTVOSの初心者です。AppleTV - tvos - ネイティブとTVMLKITを使用したハイブリッドアプリ - ネイティブアプリに戻れません
ネイティブアプリとTVMLKITを使用してAppleTVでハイブリッドアプリを作成したいと思います。 私のネイティブアプリケーションはボタン付きの単純なネイティブアプリです(swiftを使用しています)。
ボタンをクリックすると、TVLMKITとTVJSを使ってjavascriptアプリを起動します。
私のTVJS asは、Playerを使用してビデオを表示します。 ビデオが終了したら、TVJSアプリを閉じて元のViewControllerに戻したいと思います。
私の問題は、ネイティブのアプリケーションに戻ったときに、自分のネイティブビューにフォーカスが失われていることです(アプリケーションはフリーズしています)。
ネイティブのViewController:
import UIKit
import TVMLKit
class ViewController: UIViewController, TVApplicationControllerDelegate {
var window: UIWindow?
var appController: TVApplicationController?
var appControllerContext = TVApplicationControllerContext();
static let TVBaseURL = "http://localhost:9001/"
static let TVBootURL = "\(ViewController.TVBaseURL)/client/js/application.js"
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var label: UILabel!
@IBOutlet weak var viewAd: UIView!
@IBAction func clickOnlaunchAd(sender: AnyObject) {
window = UIWindow(frame: UIScreen.mainScreen().bounds)
guard let javaScriptURL = NSURL(string: ViewController.TVBootURL) else {
fatalError("unable to create NSURL")
}
appControllerContext.javaScriptApplicationURL = javaScriptURL
appControllerContext.launchOptions["BASEURL"] = ViewController.TVBaseURL
appController = TVApplicationController(context: appControllerContext, window: window,delegate: self)
}
@IBAction func clickOnChangeText(sender: AnyObject) {
label.text = "changed";
}
func appController(appController: TVApplicationController, didStopWithOptions options: [String : AnyObject]?) {
self.setNeedsFocusUpdate()
self.updateFocusIfNeeded()
}
func appController(appController: TVApplicationController, evaluateAppJavaScriptInContext jsContext: JSContext){
let notifyEventToNative : @convention(block) (NSString!) -> Void = {
(string : NSString!) -> Void in
print("[log]: \(string)\n")
self.appController?.stop()
}
jsContext.setObject(unsafeBitCast(notifyEventToNative, AnyObject.self), forKeyedSubscript: "notifyEventToNative")
}
}
ちょうど私TVJSから "notifyEventToNative" を呼び出す前に、私が呼ぶ "navigationDocument.clear();" TVMLビューをクリアします。
ネイティブアプリが表示されますが、対話できません。
アイデア?おかげさまで