uni-app 通过外部url调用UrlSchemes拉起APP无法使用
uni-app 通过外部url调用UrlSchemes拉起APP无法使用
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 不知道 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.29
手机系统:Android
手机系统版本号:Android 13
手机厂商:模拟器
手机机型:雷电模拟器
页面类型:vue
vue版本:vue3
打包方式:云端
项目创建方式:HBuilderX
操作步骤:
{
"name" : "33333",
"appid" : "UNI91AF2F0",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* 模块配置 */
"modules" : {},
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"schemes" : "yourapp"
},
/* ios打包配置 */
"ios" : {},
/* SDK配置 */
"sdkConfigs" : {}
}
},
/* 快应用特有相关 */
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "3"
}
预期结果:
预期结果就直接能拉起APP
实际结果:
就没反应,没有代码,新建的项目就没有效果
bug描述:
新建一个新的Uniapp,在APP常用其他设置里面设置UrlSchemes,随便数值,我设置yourapp。
通过html代码```javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Call UniApp</title>
</head>
<body>
<h1>点击下面的链接来启动 UniApp 应用</h1>
<a href="yourapp://">点击这里启动应用</a>
</body>
</html>
点击启动应用完全就没有反应。
打自定义基座或正式包后生效
在处理 uni-app
通过外部 URL 调用 UrlSchemes
拉起 APP 的问题时,我们需要确保几个关键点正确配置和实现。以下是一个简要的代码案例和配置说明,帮助你排查和解决该问题。
1. 配置 UrlSchemes
首先,确保你的 APP 在 manifest.json
中正确配置了 UrlSchemes
。例如:
{
"mp-weixin": {},
"app-plus": {
"distribute": {
"apple": {},
"android": {},
"urlSchemes": [
"yourappscheme"
]
}
}
}
这里,yourappscheme
是你的 APP 的自定义 URL Scheme。
2. 在 APP 中处理 URL Scheme
在 uni-app
中,你可以通过监听 onLaunch
或 onShow
生命周期函数来处理 URL Scheme。例如:
// main.js 或 App.vue 中的 onLaunch 或 onShow
export default {
onLaunch: function (options) {
if (options && options.query) {
const urlParams = options.query;
console.log('URL Scheme 参数:', urlParams);
// 根据 urlParams 做相应处理
}
},
// 其他配置...
}
3. 外部 URL 调用
确保外部 URL 调用格式正确。例如,如果你的 APP Scheme 是 yourappscheme
,则外部调用链接应该是:
<a href="yourappscheme://somepath?param1=value1¶m2=value2">打开APP</a>
或者在移动浏览器中通过 JavaScript 触发:
window.location.href = 'yourappscheme://somepath?param1=value1¶m2=value2';
4. 调试与测试
- Android:确保 AndroidManifest.xml 中配置了相应的 Intent Filter。通常,
uni-app
会自动处理这部分,但如果你遇到问题,可以手动检查。 - iOS:在 Info.plist 中添加 URL Types 配置,这通常由
uni-app
打包工具自动处理。 - 测试:使用不同的设备和浏览器测试你的 URL Scheme 是否能被正确识别并打开 APP。
5. 注意事项
- 确保 APP 已安装并能在设备上正常运行。
- 检查 URL Scheme 是否被其他 APP 占用。
- 如果是在 WebView 中调用,确保 WebView 允许跳转到外部 APP。
通过上述步骤,你应该能够排查和解决 uni-app
通过外部 URL 调用 UrlSchemes
拉起 APP 无法使用的问题。如果问题依旧存在,可能需要进一步检查 APP 的具体实现和配置细节。