cocos3.8.3调用ios不存在

  • Creator 版本:

  • 目标平台:

  • 重现方式:我js调用ios原生native.reflection.callStaticMethod(“AppDelegate”,“buttonCLickWithProduId:”,“NSString”, “package2”);原生文件AppDelegate.m中确实有buttonCLickWithProduId,参数只有一个,类型是NSString,但是我调用就是查不到这个方法

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:

1赞

Android 和 iOS的调用不一样,iOS没有签名参数那个参数

native.reflection.callStaticMethod(“AppDelegate”,“buttonCLickWithProduId:”, “package2”);这样嘛,我试过也不行啊

你的ios文件贴出来,看看咯。你这个方法是不是static的呢?

大佬贴出来了,您指点一下

用记事本写代码,您才是大佬

公司就一台苹果电脑,打包IOS,得去人家那操作,我这没办法,大佬有什么指点嘛

这个函数是否在.h里声明了?现在看着只是在mm里实现了。可能没在.h里声明,导致找不到。

image
稍微长一点就一直在审核,我直接截图发吧

声明了,我很确定,第一次报错就考虑这个问题了

试了native.reflection.callStaticMethod(“AppDelegate”,“buttonCLickWithProduId”,“”);

报错

[SE_ERROR] (/Applications/Cocos/Creator/3.8.3/CocosCreator.app/Contents/Resources/resources/3d/engine/native/cocos/bindings/manual/JavaScriptObjCBridge.mm, 326): call (AppDelegate.buttonCLickWithProduId) failed, result code: -2

还有问题的话我觉得就是你类写错了,

native.reflection.callStaticMethod("AppDelegate", "buttonCLickWithProduId");
+ (void)buttonCLickWithProduId {
    NSLog(@"==================[buttonCLickWithProduId] 执行=========================");
}

看起来没什么差距,就是我家了个空参,去掉空参就能调用,大概是这个意思把

确实打印出来了,那带参数到底应该怎么写呢

直接从这里面复制吧,然后其实我觉得应该是你 Objective-C 代码的问题,但这个语法我不熟,建议交给ai来写
https://docs.cocos.com/creator/3.8/manual/zh/advanced-topics/oc-reflection.html

但是我的OBJC部分代码,是ios原生写的,正常情况下应该是没问题的

先用cocos带参的 Objective-C 方法试试
成功调用然后拿成功调用的例子去问帮你写那个方法的人,
让人家看 Objective-C 方法他之前写的 和 Cocos 的例子里的有什么区别

https://docs.cocos.com/creator/3.8/manual/zh/advanced-topics/js-oc-bridge.html
建议用 JsbBridge实现。

完全照搬官方文档,就行了,一个参数怎么写都错,写两个就能用