????????前段時間剛好用到mui框架赡若,發(fā)現(xiàn)該框架不是很成熟达布,想要通過Native.js實現(xiàn)交互,只有安卓可以直接用到逾冬,iOS端給出的建議是通過插件的方法來執(zhí)行黍聂。由于插件的方法本人也在摸索中,現(xiàn)在整理另一種交互方式:通過Notification監(jiān)聽身腻。
? ? ? ? 這種方式产还,官網(wǎng)白皮書文檔給出了說明,本人之前就是一直卡在傳參嘀趟,原生怎么給HTML中傳參脐区?原生代碼獲取不到PDRCoreAppFrame,網(wǎng)上也能找到網(wǎng)友提供的獲取PDRCoreAppFrame她按,但是類似的方式我獲取到的對象是空的牛隅,那最后怎么成功的呢,流程如下:
? ?1酌泰、原生先進行監(jiān)聽:
2媒佣、監(jiān)聽完畢捐韩,原生直接遍歷當前視圖層級來獲取PDRCoreAppFrame進行回調(diào)搂蜓,此處需注意:如果不清楚你的PDRCoreAppFrame在哪個層級斟珊,xcode運行的時候記得查看下視圖層級膛檀,看視圖層級應(yīng)該都知道吧,如果當前視圖找不到吗垮,就需要直接找UIWindow问裕,到這一步原生直接調(diào)用-(void)fireEvent:(NSString*)eventargs:(id)args掀虎;方法就算完事了:
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
? NSArray *views = [[[window rootViewController] view] subviews];
3羡宙、接下來是HTML這邊接收參數(shù)狸剃,需要注意通知名稱一定要保持一致,然后傳遞的事件名稱要保持一致辛辨,HTML端才能發(fā)起并接收到通知:
4捕捂、講到這里順帶把安卓端通過njs獲取ssid的的方法一并截圖吧瑟枫,看我截圖中斗搞,這塊有個坑哦,需要先開啟定位權(quán)限才能獲取到慷妙,一定要注意啦FХ佟!膝擂!
? ? 最后虑啤,總結(jié)下隙弛,以上iOS原生交互傳參都是取自實際項目,未經(jīng)允許禁止私自轉(zhuǎn)載狞山,為了分享之前遇到的問題全闷,希望相互理解。