从Apple TV TVML TVJS JavaScript应用程序调用Swift代码

时间:2016-07-04 15:17:05

标签: objective-c swift tvos tvml tvjs

我已经设置了基本的TVML应用程序。目前,通过JavaScript(TVJS)处理简单事件(例如按下按钮)。

当用户按下按钮(通过TVML模板提供)时,我想要在Swift中运行一些代码来操作UI元素。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以在TVApplicationControllerDelegate中使用evaluateAppJavaScriptIn方法,如下所示,并在其中编写相应的swift方法; (迅速的一面)

// MARK: TVApplicationControllerDelegate
func appController(_ appController: TVApplicationController, evaluateAppJavaScriptIn jsContext: JSContext){
    let debug : @convention(block) (String!) -> Void = {
        (string : String!) -> Void in
        #if DEBUG
            print("[log]: \(string!)\n")
        #endif
    }
    jsContext.setObject(unsafeBitCast(debug, to: AnyObject.self), forKeyedSubscript: "debug" as (NSCopying & NSObjectProtocol)!)
}

之后你可以像这样从TVJS调用这个方法; (js方)

debug('Hello from js to swift...');