uni-app 两个不同的项目使用同一个云空间生成universal-links链接会跳转同一个app

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

uni-app 两个不同的项目使用同一个云空间生成universal-links链接会跳转同一个app

操作步骤

A、B两个项目使用同一个云服务的自动生成universal-links链接(微信登录)

预期结果

两个app各自跳转到自己的app

实际结果

当同一个手机同时拥有两个app的时候会打开同一个app

bug描述

我有两个项目配置ios通用链接(微信登录)用的自动生成,用的同一个服务空间,但是会使得我的“A项目”点击登录的时候会打开了“B项目”(如果手机里两个app都有的话)。

开发环境与版本信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 手机系统 手机系统版本号 手机厂商 手机机型 页面类型 vue版本 打包方式
HBuilderX Windows win10 正式 4.36 iOS iOS 16 苹果 iPhone13 pro vue vue2 云端

1 回复

在uni-app中,当两个不同的项目使用同一个云空间并希望生成universal-links链接时,确实可能会遇到链接跳转至同一个App的问题。这通常是因为universal-links的配置是针对云空间的域名而非具体的项目。为了确保每个项目能够正确跳转至对应的App,我们需要对universal-links的配置进行一些调整,这里提供一个可能的解决方案,通过动态生成不同的路径来区分项目。

解决方案:使用路径区分不同项目

  1. 配置云函数: 在云空间中创建一个云函数,用于生成universal-links链接。该函数根据请求参数生成包含项目标识的路径。
// 云函数 index.js
const cloud = require('wx-server-sdk')
cloud.init()

exports.main = async (event, context) => {
  const { projectId } = event
  const appId = 'your-app-id' // 替换为你的App ID
  const domain = 'https://your-cloud-function-domain.com' // 替换为你的云函数域名
  const path = `/project/${projectId}` // 使用路径区分项目

  const universalLink = `${domain}/${appId}/${path}`
  return {
    universalLink
  }
}
  1. 客户端请求云函数: 在uni-app客户端中,根据当前项目调用云函数生成对应的universal-links链接。
// uni-app 客户端代码
uni.cloud.callFunction({
  name: 'generateUniversalLink', // 云函数名称
  data: {
    projectId: 'projectA' // 替换为当前项目的标识
  },
  success: res => {
    const universalLink = res.result.universalLink
    console.log('Generated Universal Link:', universalLink)
    // 可以将universalLink设置为分享链接或进行其他操作
  },
  fail: err => {
    console.error('Error generating Universal Link:', err)
  }
})
  1. 配置universal-links: 在Apple Developer和Google Play Console中配置universal-links时,确保域名和路径模式能够匹配到上述生成的链接。通常,你需要配置一个通配符路径,如*.your-cloud-function-domain.com/*,并在App内部根据路径判断是哪个项目。

  2. App内部处理: 在App的universal-links处理逻辑中,根据路径中的projectId参数判断是哪个项目,并相应地展示内容或跳转至对应的页面。

通过上述方法,即使两个uni-app项目使用同一个云空间,也能生成并正确处理各自的universal-links链接,避免跳转至同一个App的问题。

回到顶部