Вызов кода Swift из приложения Apple TV TVML TVJS JavaScript

У меня установлено базовое приложение TVML. В настоящее время простые события (например, нажатие кнопки) обрабатываются с помощью JavaScript (TVJS).

Когда пользователь нажимает кнопку (предоставленную через шаблон TVML), я бы хотел, чтобы вместо этого в Swift запускался некоторый код, который манипулирует элементами пользовательского интерфейса.

Как лучше всего это сделать?


person Gaurav Sharma    schedule 04.07.2016    source источник
comment


Ответы (1)


Вы можете использовать метод AssessmentAppJavaScriptIn в TVApplicationControllerDelegate, как показано ниже, и написать в нем соответствующий быстрый метод; (быстрая сторона)

// 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...');
person mpakkan    schedule 15.10.2016