uni-app 打包成android app后 urlSchemes链接无效

发布于 1周前 作者 sinazl 来自 Uni-App

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
项目创建方式 新创建了一个空项目

4 回复

不能直接输入的,写一个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"
        }
      ]
    }
  }
}

在这个例子中,schememyuniqueapphostopen,这意味着你的应用将能够响应形如myuniqueapp://open/...的URL。

2. 处理URL Scheme在应用中的打开

在uni-app中,你可以通过监听onLaunchonShow生命周期函数来捕获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链接无效的问题。

回到顶部