HTML 5+与原生iOS交互传参问题
前段时间刚好用到mui框架,发现该框架不是很成熟,想要通过Native.js实现交互,只有安卓可以直接用到,iOS端给出的建议是通过插件的方法来执行。由于插件的方法本人也在摸索中,现在整理另一种交互方式:通过Notification监听。
这种方式,官网白皮书文档给出了说明,本人之前就是一直卡在传参,原生怎么给HTML中传参?原生代码获取不到PDRCoreAppFrame,网上也能找到网友提供的获取PDRCoreAppFrame,但是类似的方式我获取到的对象是空的,那最后怎么成功的呢,流程如下:
1、原生先进行监听:
2、监听完毕,原生直接遍历当前视图层级来获取PDRCoreAppFrame进行回调,此处需注意:如果不清楚你的PDRCoreAppFrame在哪个层级,xcode运行的时候记得查看下视图层级,看视图层级应该都知道吧,如果当前视图找不到,就需要直接找UIWindow,到这一步原生直接调用-(void)fireEvent:(NSString*)eventargs:(id)args;方法就算完事了:
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
NSArray *views = [[[window rootViewController] view] subviews];
3、接下来是HTML这边接收参数,需要注意通知名称一定要保持一致,然后传递的事件名称要保持一致,HTML端才能发起并接收到通知:
4、讲到这里顺带把安卓端通过njs获取ssid的的方法一并截图吧,看我截图中,这块有个坑哦,需要先开启定位权限才能获取到,一定要注意啦!!!
最后,总结下,以上iOS原生交互传参都是取自实际项目,未经允许禁止私自转载,为了分享之前遇到的问题,希望相互理解。