和这个基本一样,不过他的方法我这里并不是。
官方的cocs-example-demo 工程也看过了,使用OnScriptEventListener包了一个 block,真的只能传常量,传变量也走不通。
和这个基本一样,不过他的方法我这里并不是。
官方的cocs-example-demo 工程也看过了,使用OnScriptEventListener包了一个 block,真的只能传常量,传变量也走不通。
老哥你咋解决?
我现在是这么干的
@interface WeChatModule ()
// 要持有一个引用
@property (nonatomic, copy) OnScriptEventListener sendAuthRequestListener;
@end
// 下面找个合适的地方初始化
__weak typeof(self) weakSelf = self;
self.sendAuthRequestListener = ^(NSString *arg) {
__strong typeof(weakSelf) strongSelf = weakSelf;
[strongSelf sendAuthRequest:arg];
};
[[JsbBridgeWrapper sharedInstance] addScriptEventListener:[WeChatEvents WECHAT_SEND_AUTH_REQUEST] listener:self.sendAuthRequestListener];
没解决,你这个方法我试过,不行
我现在想进游戏直接发,不走 block,也不行。
[m dispatchEventToScript:@“actionAppleLoginInfo” arg:callbackStr];
压根也发不了。直接报错。
你是发事件给js的话 你先确保一下js已经初始化完了?
那肯定,也就是一个回调而已:
jsb.bridge.onNative = (methodName: string, arg1?: string | null) => {
console.log(TAG, "onNative methodName: " + methodName + " is: " +arg1);
};
如果你js的监听事件已经注册完了 iOS再派发事件还报错的话 我也不清楚了
嗯 我打算放弃了,还是用老方法
这个报错就是访问了不存在的内存地址 一般是对象提前释放了导致的 正常来说类给他一个引用就不会提前释放的。。
貌似找到原因了:可能是我那个代码需要在主线程中执行,但我不知道怎么在 oc / oc++ 中把那个调 JS 的代码改到主线程中,你知道代码怎么修改吗?
我继续搜索一下
dispatch_async(dispatch_get_main_queue(), ^{
});
官方文档里找到类似的描述:

但那个 Application 类压根就找不到。估计这个文档也好久没更新了。
嗯,我先试试
太感谢了兄弟,没错,终于解决了!!!