Как я могу получить JS объект в нативном (Objective- C) для WKWebView? - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь вызвать функцию Javascript для объекта JS из Native в WKUserContentController, но, похоже, не существует возможного подхода.

Мой Javascript код (Здесь мой js -plugin пытается выполнить вызов функции для native.После завершения собственного рабочего процесса он должен иметь возможность самостоятельно обновлять его в nativeWorkflowDone): -

define(["core/plugin-core"],
       function (PluginCore) {
    "use strict";
    var UPLOAD_LINK= PluginCore.UploadLink.prototype.UPLOAD_STATES;
    _proxy: = {};
    PluginCore.NativeObject= PluginCore.Api.extend({

        initialize: function () {
            PluginCore.Api.prototype.initialize.call(this);

            this.startWorkflow();
        },

        nativeWorkflowDone : function(populatedData) {
                for(var key in populatedData)
                        this._proxy[key] = populatedData[key];
                //HTML to be modified here once nativeWorkflow is done.
        },

        startWorkflow: function(workflowOptions){
                var message = {"object" : this, "function" : nativeWorkflowDone };
                window.webkit.messageHandlers.Workflow.postMessage(message)
        }
};

My Objective- C код для обработки JS вызовов: -

-(void) userContentController:(nonnull WKUserContentController*)userContentController didRecieveScriptMessage:(nonnull WKScriptMessage*)message{
       if([message.name isEqualToString:@"getCount"]) {
                       NSString *js = [NSString stringWithFormat:@"UpdateCount('%@');", mCount++];
                       [mWebBrowser evaluateJavaScript:js completionHandler:nil];
       } else if(message.name isEqualToString:@"Workflow"]) {
                      //NOT SURE HOW TO GET JS OBJECT "this" HERE. ALSO, HOW CAN I CALL BACK ON IT Eg this.nativeWorkflowDone ?????.
       }
}

Может ли кто-нибудь помочь мне понять, как я могу получить объект JS (например, 'this') в Native WKUserContentController в WKWebView? Кроме того, как я могу вызвать его метод из Native?

...