微信或QQ分享跳转到APP指定页面

本文介绍iOS中Universal Links的配置方法,包括创建apple-app-site-association文件并上传至HTTPS服务器,验证文件,配置app支持Universal Links,以及如何在应用内处理Universal Links。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享链接通过浏览器跳转到APP页面
iOS分享通过safari浏览器实现都是按照URL Scheme,但是在QQ或者微信就无法实现,原因是QQ、微信将这种唤醒app的方式给禁止掉了,
因此这种方式就不可以再被使用,如果需求仍然需要就要换一种方式了
在iOS9以后苹果提供Universal Links
官方文档原话的意思:
When you support universal links, iOS users can tap a link to your website and get seamlessly redirected to your installed app without going through Safari. If your app isn’t installed, tapping a link to your website opens your website in Safari.
就是不通过safari也可以跳转到自己的app
以下是步骤:
1.如何配置Universal Links
Create an apple-app-site-association file that contains JSON data about the URLs that your app can handle.
Upload the apple-app-site-association file to your HTTPS web server. You can place the file at the root of your server or in the .well-known subdirectory.
Prepare your app to handle universal links.
首先需要创建apple-app-site-association的文件,注意这里不是.json文件
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}
paths如果是第二个是没有限制的,如果选取第一个则是需要限制的路径
appID是由teamID。bundleId的形式,teamID在账号设置里面找,每个账号都有一个唯一的teamID
2.验证apple-app-site-association 苹果又验证网站https://search.developer.apple.com/appsearch-validation-tool/ 
3.app IDS配置
开启associate domains 并且更新相应的证书
4.app只需要在Capablities下打开并且增加指定的域名
这里需要特别注意的是:打开页面的域名和提供苹果访问apple-app-site-association的域名以及项目配置的域名要保持一致,但是分享页面的域名不可和该域名保持一致,也就是需要跨域访问


代码
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
    return YES;
}
如何在url里取参数,这时候需要通过userActivity获取url然后进行对比
<think>嗯,用户现在想了解微信扫一扫跳转到企业微信添加页面的具体实现方式,这其实是一个跨应用跳转的场景。之前已经详细讨论过微信和企业微信扫码功能的兼容性差异,现在需要聚焦在这个特定的跳转需求上。用户提供的引用内容很有价值:引用[3]提到企业微信登录需要后端消费code换取userid,引用[4]展示了授权链接的构造方式。但用户现在的需求更偏向于添加联系人而非登录授权,这是两个不同的流程。仔细分析这个需求,核心在于生成带有特定参数的企微联系人二维码。企业微信官方文档确实支持这种深层链接(deeplink),格式是https://work.weixin.qq.com/kf/user/参数。不过要注意两个关键点:一是微信环境会限制外部链接跳转,二是必须区分个人用户和企业用户的不同参数格式。突然想到个容易被忽略的技术细节:微信内置浏览器会拦截普通http链接,所以二维码里的URL必须使用https协议。而且如果跳转目标是添加外部联系人,还需要先在企微管理后台开启“允许成员添加外部联系人”的权限,否则跳转会失败。测试环节要特别注意多终端覆盖。之前沟通时提到过iOS和Android的差异,这次还需要额外测试微信不同版本的表现。建议用户在微信开发者工具里先模拟测试,再用真实设备验证。遇到拦截问题时,可能需要引导用户手动复制链接到浏览器。考虑到实际开发中可能遇到的问题,最后补充的注意事项特别重要。比如在微信里直接点击添加链接可能被阻止,这时候就需要设计备选方案——或者引导用户手动复制,或者改用企业微信的API生成二维码,又或者通过服务端中转跳转。相关问题的延伸也很有必要,特别是H5页面在企微里如何唤起原生添加界面这个方向。这涉及到js-sdk的调用,和当前问题属于同类技术场景。</think> 要实现微信扫一扫跳转至企业微信添加页面(如添加客服/员工),需通过**企业微信联系人链接**结合**网页授权**实现,以下是具体步骤与技术要点: --- ### 一、实现原理 ```mermaid graph LR A[微信扫普通二维码] --> B{解析URL格式} B -->|匹配企微联系人链接| C[微信内置浏览器打开] C --> D[调用企业微信SDK跳转] D --> E[企业微信添加联系人界面] B -->|非企微链接| F[普通网页跳转] ``` *关键点:微信无法直接唤起企业微信App,需通过中间页引导用户操作* --- ### 二、具体开发步骤 #### 1. 生成企业微信联系人链接 在企业微信管理后台生成**标准联系人链接**(支持成员/客服): `https://work.weixin.qq.com/kf/user/外部联系人ID?scene=用户来源标识` 成员链接: `https://open.work.weixin.qq.com/wwopen/user?userid=成员ID&source=来源ID` > ⚠️ 需在「客户联系-配置」开启「通过二维码联系」权限[^4] #### 2. 构建中间跳转页(核心) ```html <!DOCTYPE html> <html> <head> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> </head> <body> <script> // 判断当前环境 const isWeChat = /MicroMessenger/i.test(navigator.userAgent); const isWorkWechat = /Wework/i.test(navigator.userAgent); // 若在微信环境 if (isWeChat && !isWorkWechat) { const redirectUrl = encodeURIComponent('https://你的域名/企微联系人链接'); // 引导用户点击跳转按钮 document.write(` <button onclick="location.href='${redirectUrl}'"> 点击跳转企业微信 </button> <p>复制链接到企业微信打开:${redirectUrl}</p> `); } // 若在企业微信则直接跳转 else if (isWorkWechat) { wx.config({ // 通过企业微信JS-SDK配置(需后端生成签名) corpId: '企业ID', timestamp: 签名时间戳, nonceStr: '随机字符串', signature: '签名', jsApiList: ['launchMiniprogram'] }); wx.ready(() => { // 直接打开联系人页 window.location.href = '企微联系人链接'; }); } </script> </body> </html> ``` #### 3. 二维码生成规则 ```javascript // 示例:使用qrcode.js生成二维码 QRCode.toDataURL('https://你的域名/中间页地址', { width: 300, margin: 2 }, (err, url) => { document.getElementById('qrcode').src = url; }); ``` --- ### 三、避坑指南 1. **域名白名单** - 在企微后台「应用管理-网页授权」配置中间页域名 - 微信需设置JS安全域名(仅支持备案域名) 2. **iOS限制处理** ```javascript // iOS微信禁用通用链接(universal link) if (isIOS && isWeChat) { alert("请点击右上角在Safari中打开"); } ``` 3. **参数传递方案** ```mermaid graph TB 扫二维码 --> 携带scene参数 企微接收参数 --> 后端根据scene区分用户来源 后端返回 --> 展示个性化添加界面 ``` --- ### 四、测试验证方法 | 测试场景 | 预期结果 | 工具 | |-----------------------|------------------------------|----------------------| | 微信扫二维码 | 显示跳转引导页 | 微信开发者工具 | | 点击跳转按钮 | 成功唤起企业微信 | 真机测试(iOS/Android)| | 企业微信打开链接 | 直达联系人添加页 | Charles抓包 | | 非企微用户扫码 | 显示错误提示页 | 浏览器模拟 | > ✅ **成功标志**:企业微信内打开链接后自动填充联系人信息,显示「添加到通讯录」按钮[^3] --- ### 五、备选方案(当直接跳转失败时) 1. **企业微信API唤起** ```javascript wx.invoke('openEnterpriseContact', { userId: 'zhangsan', type: 2 // 1=聊天 2=个人资料页 }); ``` > 需企业微信4.1+版本支持[^2] 2. **小程序跳转(需关联同一主体)** ```javascript wx.navigateToMiniProgram({ appId: '企业微信小程序ID', path: 'pages/profile?userid=zhangsan' }) ``` --- **相关问题** 1. 企业微信个人资料页如何自定义显示内容? 2. 如何实现微信H5页面直接唤起企业微信聊天窗口? 3. 企业微信API唤起失败时有哪些降级方案? 4. 外部联系人添加链接的有效期如何设置? > *实现中需特别注意微信安全策略限制,建议始终提供手动复制链接的备选方案[^1]*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值