uni-app 两个不同的项目使用同一个云空间生成universal-links链接会跳转同一个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 | 云端 |
在uni-app中,当两个不同的项目使用同一个云空间并希望生成universal-links链接时,确实可能会遇到链接跳转至同一个App的问题。这通常是因为universal-links的配置是针对云空间的域名而非具体的项目。为了确保每个项目能够正确跳转至对应的App,我们需要对universal-links的配置进行一些调整,这里提供一个可能的解决方案,通过动态生成不同的路径来区分项目。
解决方案:使用路径区分不同项目
- 配置云函数: 在云空间中创建一个云函数,用于生成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
}
}
- 客户端请求云函数: 在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)
}
})
-
配置universal-links: 在Apple Developer和Google Play Console中配置universal-links时,确保域名和路径模式能够匹配到上述生成的链接。通常,你需要配置一个通配符路径,如
*.your-cloud-function-domain.com/*
,并在App内部根据路径判断是哪个项目。 -
App内部处理: 在App的universal-links处理逻辑中,根据路径中的
projectId
参数判断是哪个项目,并相应地展示内容或跳转至对应的页面。
通过上述方法,即使两个uni-app项目使用同一个云空间,也能生成并正确处理各自的universal-links链接,避免跳转至同一个App的问题。