我们对比app环境和浏览器环境的navigator.userAgent,可以发现它们几乎一致,并不能通过它来区分。
解决方案:
由于在app内部要传参数给安卓和ios,app定义了相应的方法来接收数据,我们就可以通过是否有对应的方法来判断。

    const u = navigator.userAgent,
	isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
	isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
    if (isiOS) {
		try {//app内
			window.webkit.messageHandlers.getMessage.postMessage(jsonObj)
		} catch (error) {//浏览器内
			copyUrl();
		}
	} else if(isAndroid){
	   if(window.native){//app内
		   window.native.onClikWebView()
	   } else {//浏览器内
			copyUrl();
		}
    }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐