JavaScriptObjCBridge failed, result code: -2

[ERROR] (/Applications/CocosCreator.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual/JavaScriptObjCBridge.mm, 418): call (GameAnalytics.TDGA_putUserData:setAccountType:setGender:setAge:setAccountName:) failed, result code: -2

failed, result code: -2
一般来说是js中反射方法传递的参数数量不对

JavaScriptObjCBridge failed, result code: -3

一般是反射方法 中传递的方法名称书写有误

1赞

调用oc里面一个void方法,方法签名是"()V"吧

https://docs.cocos.com/creator/manual/zh/advanced-topics/oc-reflection.html
()v 是java的

调用OC里面的方法签名到底是什么 我一直code -2

兄弟,你知道方法签名是啥了嘛,我这还在一直-2呢 :pensive:

如果是ios的 修改API源码 加一个一样的方法 然后去掉签名的参数

在creator.d.ts 中加入 /**

     * https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html

     * call OBJC static methods

     * 

     * @param className 

     * @param methodName 

     * @param parameters 

     */

    export function callStaticMethod(className: string, methodName: string, ...parameters:any): any;

感谢反馈,这边使用2.4.5和3.1.2版本,对js调用oc进行验证,正常。

使用2.4.5版本验证

用户脚本侧


oc侧

使用3.1.2版本验证
用户脚本侧


oc侧

测试demo 2.4.5:
链接: https://pan.baidu.com/s/1c-JgD2HGnWF0l8fhPEEp0g 密码: 7o35

测试demo 3.1.2:
链接: https://pan.baidu.com/s/1CochwRuiM-x1Ghq4MQr7PQ 密码: 802f