JSB手动绑定后原生平台如何向JS通信

  • Creator 版本:2.2.1

  • 描述:为了实现原生、JS的相互通信,参考官方文档手动绑定了JSB,现在实现了JS调用原生的相关操作,但是原生代码如何通知JS我完成了某个操作该如何实现被卡住了。

JS调用原生代码:

testGalleryJSB: function () {
    var galleryObj = new ns.GalleryJSBind();
    ns.GalleryJSBind.static_func();
    var delegateObj = {
        onCallback: function (counter) {
            console.log('获取相片完成,照片数据待处理');
            this.statusLabel.string = '获取相片完成,照片数据待处理';
        }
    };

    galleryObj.setCallback(delegateObj.onCallback, delegateObj);
    galleryObj.openGallery();
},

JSB文件因为较多,直接传源码文件如下:
jsbGallery.zip (5.9 KB)

为了让你更好理解我的需求从而可以帮到吗,附一个简单的示意图:

截图中箭头指向这部分该如何实现?
即代码中这个类对象如何到SE引擎中获取

可以参考下面接口的实现,原生平台向JS通讯,就是调用这个注册的回调。
js_network_Downloader_setOnFileTaskSuccess

se::State 这个对象里有C++对象的实例参数,但是这个state我要如何获取呢?或者说static bool js_network_Downloader_setOnFileTaskSuccess(se::State& s)这个静态方法注册完之后是如何调用的呢?

还希望可以给更多参考,CCDownloader文件及CCDownloaderImpl-apple都有粗略浏览一下,没太搞明白是如何触发回调的。

你还是看下文档吧,根据下图的情况,你已经把绑定过程写完了的,怎么还会有这样疑问?
http://docs.cocos.com/creator/manual/zh/advanced-topics/jsb-manual-binding.html?h=jsb

我是想在比如iOS原生弹窗的确定按钮回调里触发JSB里面设置的回调函数,实现JS端设置的回调内容。

现在在原生端就是不知道要怎么手动触发调用这个回调函数满足这个需求。

你看下别人怎么做的,把回调函数保存全局,你在原生代码哪里都可以调到。
https://blog.csdn.net/Yishionwang/article/details/89497522

1赞

感谢,保存全局解决了。

哈哈,竟然是我原创的,荣幸