封装方法
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")