uni-app 打包成android app后 urlSchemes链接无效
uni-app 打包成android app后 urlSchemes链接无效
5+App 特有相关
"app-plus": {
"usingComponents": true,
"nvueStyleCompiler": "uni-app",
"compilerVersion": 3,
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},
"modules": {},
"distribute": {
"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": "apptest",
"abiFilters": ["armeabi-v7a", "arm64-v8a"]
},
"ios": {
"dSYMs": false
},
"sdkConfigs": {
"ad": {}
}
}
}
问题描述
新创建了一个空项目,配置 apptest
,云打包后,手机安装app,打开手机浏览器输入:apptest://pages/index/index
浏览器提示 “您访问的页面不存在”,无法拉起手机app。使用 H5 页面跳转手机 Edge 和自带浏览器没有反应,但 via 浏览器就提示是否拉起。这是什么原因呢?
开发环境与版本信息
项 | 信息 |
---|---|
开发环境 | 未提供 |
版本号 | compilerVersion: 3 |
项目创建方式 | 新创建了一个空项目 |
不能直接输入的,写一个h5做跳转吧 window.location.href = “apptest://”;
我尝试一下,感谢
使用h5跳转也是识别浏览器的吗?这个怎么写能在任何浏览器都能拉起app呢
在处理uni-app打包成Android应用后urlSchemes
链接无效的问题时,首先需要确保在manifest.json
文件中正确配置了urlSchemes
。以下是一个配置示例,以及如何在代码中处理这些链接的示例。
1. 配置manifest.json
在manifest.json
文件中,你需要添加或修改app-plus
下的urlSchemes
配置。这里是一个配置示例:
{
"mp-weixin": {},
"app-plus": {
"distribute": {
"apple": {},
"google": {}
},
"plus": {
"distribute": {
"apple": {},
"google": {}
},
"urlSchemes": [
{
"scheme": "myuniqueapp",
"host": "open"
}
]
}
}
}
在这个例子中,scheme
是myuniqueapp
,host
是open
,这意味着你的应用将能够响应形如myuniqueapp://open/...
的URL。
2. 处理URL Scheme在应用中的打开
在uni-app中,你可以通过监听onLaunch
或onShow
生命周期函数来捕获URL Scheme的打开请求。以下是一个简单的示例代码,展示如何在App.vue
中处理这种情况:
// App.vue
export default {
onLaunch: function (options) {
// 检查启动参数中是否包含url参数
if (options && options.query) {
const url = decodeURIComponent(options.query.url || '');
if (url) {
console.log('URL Scheme opened with URL:', url);
// 在这里处理URL,例如根据URL跳转到特定的页面
// this.$navigateTo({ url: `/pages/somePage/somePage?param=${encodeURIComponent(url)}` });
}
}
},
// 其他代码...
}
在这个例子中,我们检查options.query
中是否包含url
参数,这通常是由URL Scheme传递进来的。然后,我们对URL进行解码,并根据需要进行处理,比如跳转到应用内的某个页面。
注意事项
- 确保在AndroidManifest.xml中没有其他配置覆盖了你的URL Scheme设置。
- 在测试时,确保你的应用已经正确安装到设备上,并且URL Scheme的格式与
manifest.json
中的配置相匹配。 - 如果使用HBuilderX进行打包,确保使用了最新版本的HBuilderX,以避免已知的bug。
通过上述配置和代码处理,你应该能够解决uni-app打包成Android应用后URL Scheme链接无效的问题。