uni-app 两个APP都自动生成 Universal Links 在分享后会进入到另一个APP

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

uni-app 两个APP都自动生成 Universal Links 在分享后会进入到另一个APP

产品分类

uniapp/App

开发环境、版本号及项目创建方式

项⽬目信息 详情
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 12.3.1
HBuilderX类型 正式
HBuilderX版本号 4.05
手机系统 iOS
手机系统版本号 iOS 17
手机厂商 苹果
手机机型 14
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤

个APP都自动生成 Universal Links 在分享后会进入到另一个APP

预期结果

个APP都自 自动生成 Universal Links 在分享后返回自己APP

实际结果

进入到另一个APP

bug描述

2个APP都自动生成 Universal Links 在一个app分享后会进入到另一个APP

相关链接


2 回复

现在是怎么解决的


在uni-app中实现两个APP之间通过Universal Links进行相互跳转,可以利用iOS和Android的深层链接(Deep Linking)机制。以下是一个简要的实现思路和代码示例,展示了如何在uni-app中配置和使用Universal Links。

1. 配置Universal Links(iOS)

对于iOS,需要在Apple Developer账户中配置一个Associated Domains,然后在Xcode中进行相应的设置。

步骤

  1. Apple Developer配置

    • 登录Apple Developer账户,为你的应用配置一个Associated Domains。
    • 例如:applinks:yourdomain.com
  2. Xcode配置

    • 打开Xcode,选择你的项目。
    • 在Capabilities标签页中,启用Associated Domains。
    • entitlements文件中添加如下配置:
      <key>com.apple.developer.associated-domains</key>
      <array>
          <string>applinks:yourdomain.com</string>
      </array>
      
  3. 配置apple-app-site-association文件

    • 在你的服务器根目录或.well-known目录下放置一个apple-app-site-association文件,内容如下:
      {
        "applinks": {
          "apps": [],
          "details": [
            {
              "appID": "TEAMID.com.yourcompany.yourapp",
              "paths": [ "/path/*" ]
            }
          ]
        }
      }
      

2. 配置Android App Links(Android)

对于Android,需要配置数字资产链接(Digital Asset Links)。

步骤

  1. 配置assetlinks.json文件

    • 在你的服务器.well-known目录下放置一个assetlinks.json文件,内容如下:
      [
        {
          "relation": ["delegate_permission/common.handle_all_urls"],
          "target": {
            "namespace": "android_app",
            "package_name": "com.yourcompany.yourapp",
            "sha256_cert_fingerprints": [
              "YOUR_CERT_FINGERPRINT"
            ]
          }
        }
      ]
      
  2. 在AndroidManifest.xml中添加Intent Filter

    • AndroidManifest.xml中,为你的Activity添加如下Intent Filter:
      <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http" android:host="yourdomain.com" android:pathPrefix="/path" />
      </intent-filter>
      

3. uni-app代码实现

在uni-app中,你可以使用以下代码来处理URL Scheme或Universal Links的跳转逻辑:

// 监听URL变化
plus.runtime.getArgument(function(args) {
    if (args && args.url) {
        let url = args.url;
        // 根据URL执行相应的跳转逻辑
        if (url.startsWith('http://yourdomain.com/app1')) {
            // 跳转到APP1的某个页面
        } else if (url.startsWith('http://yourdomain.com/app2')) {
            // 跳转到APP2的某个页面
        }
    }
});

通过上述配置和代码,你可以实现两个uni-app应用之间通过Universal Links进行相互跳转。

回到顶部