niapp开发的 H5 被app嵌套,H5调用ios和安卓方法

封装方法

javascript 复制代码
export function appSkipH5(params = {}, action) {
	try {
		// 1. 环境判断:区分安卓/iOS/非APP环境
		const ua = navigator.userAgent;
		const isAndroid = /Android|Adr/i.test(ua); // 安卓环境
		const isIOS = /iPhone|iPad|iPod|iOS/i.test(ua); // iOS环境

		if (!isAndroid && !isIOS) {
			uni.showToast({
				title: '仅支持在APP内跳转',
				icon: 'none'
			});
			return;
		}

		const paramsStr = JSON.stringify(params);
		// 2. 根据action类型执行不同的跳转逻辑
//安卓: WebAndroid是安卓自定义的
//IOS: window.webkit.messageHandlers.XXXX.postMessage() XXXX 是IOS自定函数;
		console.log(action, paramsStr, "paramsStr");
		switch (action) {

			case 'goToGoodsDetail': // 商品详情页 IOS和安卓调用的方法goToGoodsDetail
				// 安卓端调用(传递参数JSON字符串)
				if (isAndroid) {
					WebAndroid.goToGoodsDetail(paramsStr);
				}

				// iOS端调用(直接传递参数对象)
				if (isIOS) {
					window.webkit.messageHandlers.goToGoodsDetail.postMessage(paramsStr);
				}
				break;

			case 'finishAct': // 关闭当前界面--IOS和安卓调用的方法finishAct
				// 安卓端调用(传递参数JSON字符串)
				if (isAndroid) {
					WebAndroid.finishAct();
				}

				// iOS端调用(直接传递参数对象)
				if (isIOS) {
					window.webkit.messageHandlers.finishAct.postMessage();
				}
				break;

			case 'goToMain': // 跳转到首页IOS和安卓调用的方法goToMain
				// 安卓端调用(传递参数JSON字符串)
				if (isAndroid) {
					WebAndroid.goToMain();
				}

				// iOS端调用(直接传递参数对象)
				if (isIOS) {
					window.webkit.messageHandlers.goToMain.postMessage();
				}
				break;
		}

	} catch (e) {
		console.error('跳转失败:', e);
		uni.showToast({
			title: '跳转失败,请重试',
			icon: 'none'
		});
	}
}

页面引入

javascript 复制代码
	import {
		appSkipH5
	} from "@/utils/patch.js"

appSkipH5(jumpParams, "goToGoodsDetail")
相关推荐
HLC++8 小时前
Linux的进程间通信
android·linux·服务器
爱笑鱼11 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼12 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon13 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
ZZH_AI项目交付13 小时前
同一套前摄心率算法,为什么 iPhone 16 Pro 稳,iPhone XR 会失准?
ios·app·ai编程
用户693717500138414 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
DeMinds14 小时前
内容没有丢,我为什么总在重新整理?|DeMinds 如何让工作接着继续
ios·github·markdown
蝉蜕日记14 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
apd_csdn14 小时前
清华邮箱苹果邮件app设置(全)
ios·thu
吐了啊取名字太难14 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程