Hybrid开发中JS怎么调用原生方法传参不生效?
我在做Hybrid App,用WebView加载H5页面,通过window.webkit.messageHandlers.xxx.postMessage方式调用iOS原生方法。但传过去的参数在原生那边一直是undefined,明明我传的是个对象啊。
比如我这样调用:
window.webkit.messageHandlers.getUserInfo.postMessage({id: 123, name: 'test'});
原生那边收到的却是空的。是不是postMessage只能传字符串?需要手动JSON.stringify吗?
不是不能传对象,而是要确保传的是合法JSON对象。你试下这样改:
两种方式都可以,第一种直接传对象更常用。如果还是不行,建议:
1. 检查原生代码里是不是用错了解析方法,iOS端应该用NSDictionary或NSData接收
2. 确认WebView初始化时配置了正确的messageHandler
3. 加个try-catch看看是不是有JS报错被吞掉了
我之前有个项目就是原生那边用NSArray接收,结果死活拿不到参数,改成NSDictionary就好了。这种问题最烦人,调试半天发现是类型不匹配。