最近项目要求APP中要嵌套H5的页面。
首先,创建两个JS文件,便于区分管理
1、DeviceType.js用于判断环境是Android还是IOS
export const DeviceType=(()=>{
var u = navigator.userAgent;
if (u.match(/Android/i) != null) {
return "Android";
} else if (u.match(/iPhone|iPod|ios/i) != null) {
return "IOS";
}
})()
2、utilityApi.js 再创建一个文件用于封装与android和ios交互的方法,保证统一并且易于管理。要引入DeviceType.js
import {DeviceType} from './DeviceType'
bannerClick(id)为H5中使用的方法去调用app的方法,jumpBanner(id)为原生app的方法,两边统一,id为需要传递的参数,这里有一种情况,url传递参数为文字的时候会出现乱码的情况,这里需要进行转码处理、encodeURI()
这里有个大坑,ios的 window.webkit.messageHandlers.方法名.postMessage();这个方法中 必须要传参数,不传参数ios那边监听不到方法名,