iOS经典讲解之微信SDK更新后需要UniversalLink解决方案

iOS Universal Links(通用链接)详细教程 iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。实现场景:微信链接无缝跳转App, 网页链接无缝跳转AppBundle Identifler所在的位置 :Team ID所在的位置:打开页面,登录apple 开发者账号,划到页面下方,找到将以下json文本复制进去,并修改teamID和Bundle Identifler。details:是数组,可以有多个数据,即可支持多个app。 阅读详情

一:微信更新1.8.6的SDK后,在delegate注册时多了一个universalLink参数(如下)

+ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;

不管你是友盟还是ShareSDK等等,只要是最新版的应该都需要这个参数,参考:微信官方文档,经验总结如下。

本文将介绍如何配置UniversalLink进行APP跳转,并完成微信相关操作(分享、支付、登录)。

即使你的APP目前跳转微信没问题也,强烈建议趁早适配此方案,因为在最新iOS系统和微信版本上可能出现无法调起微信的情况!

注1:配置此方案不需要线上,本地xcode build运行即可配置测试。
注2:配置过程中不建议为了急于实现项目特有需求,盲目修改,先化繁为简,完成基本功能再复杂化为上策


二:什么是UniversalLink

  • 什么是UniversalLink?
    UniversalLink与URL Schemes一样,都是跳转APP的一种方式。
    简单来说就是一个URL,当用户在浏览器中访问此URL时,苹果会检测对应的APP是否已安装。
    已安装则跳转到APP。
    未安装则访问此URL实际内容。

  • 为什么要用它呢?
    微信之前是用URL Schemes方式跳转APP,在微信7.0.7版本和微信SDK1.8.6更新后,为了安全性等原因,改用universalLink方式。蛋疼的是更新之后就必须用这种方式,要是不填universalLink,不管是分享、支付、登录都无法调起微信,真是有够折腾人的。

     

这里有几篇苹果官方文档的解释,使用谷歌浏览器翻译一下就好了,文章都不长,强烈建议都认真看一圈。我也是反复读了很多遍后才理解这玩意的。
支持通用链接
允许应用程序和网站链接到您的内容
启用通用链接
处理通用链接

三:配置UniversalLink的步骤

总体来说步骤还是比较多的,但其实都很简单,主要是要注意很多细节的东西,这里先列出来大概步骤,请先大致浏览一下(顺序不分前后的)

1、让后台人员准备一个https的链接,一定要https的(微信硬性要求)

2、制作apple-app-site-association文件,并放置在准备好的链接根目录下

3、App Store应用管理和Xcode开启Associated Domains,并填写对应Domains

4、用GET请求测试该链接下的文件内容,并在safari浏览器中测试

5、微信开放平台和SDK注册方法填写相同UniversalLink

6、填写微信新的LSApplicationQueriesSchemes

7、回调测试

四:步骤详解

  • 1.为什么要准备https的链接?其实苹果是支持http和https,但是微信要求是这样,这一步交给你的服务器人员去完成。

  • 2 制作apple-app-site-association文件,并放在准备好的链接根目录下。请先看看苹果官方的解释(如下图)

大致意思就是苹果会在APP第一次安装启动时(仅第一次),访问你准备的链接下面此文件。(这里苹果其实会访问两次,第一次是.well-known子目录下,第二次才是根目录)

注:该文件若改动过,建议卸载重新安装,苹果重新主动请求

一般放在根目录下即可,若你的链接有重定向,建议尝试放置在.well-known子目录下,并且保证能GET请求到此文件,且文件不需要后缀名。

例如:以https://help.wechat.com为基础链接,则该文件请求路径为
https://help.wechat.com/apple-app-site-association
https://help.wechat.com/.well-known/apple-app-site-association

那么此文件的内容是什么呢?还是来看看官方的解释

其实就是一个json,apps数组不用管,details里面填入对应得appID和paths。

appID就是用前缀(Team ID)+bundleID的方式,在App Store应用后台可以查看此前缀

paths则是可访问APP的对应页面路径,APP Delegate有对应方法可以获取,更多关于paths的介绍这里不做过多撰述,下面有个例子,替换APPID和BundleID即可复制直接使用。

{
    "applinks":{
        "apps":[

        ],
        "details":[
            {
                "paths":["*"],
                "appID":"xxxxxx.com.wechat.wexin"
            }
        ]
    }
}

ok,到这里apple-app-site-association文件就制作好了,把它交给你的后台人员,按照之前说的放到相应目录。并且使用GET请求进行测试,确保路径能正常访问,json格式正确-_-!,如图

 


  • 3.去App Store应用管理开启Associated Domains

启用Xcode-Capabilities中的Associated Domains,以applinks:+你准备的UniversalLink的形式填写对应值。例如:applinks:help.wechat.com,注意此次应是裸的域名,不要加https或者文件名

 

  • 4.一切就绪后即可在safari浏览器中测试。
    卸载一次APP,build run一下,然后你就可以先在safari浏览器中测试走一波,把链接地址输入进去如https://help.wechat.com。页面加载完往下拉一下,看是否有打开APP的提示,如果有则配置成功!


  • 5.以上步骤与微信毫无关系,但证明UniversalLink已经配置成功,可进行APP跳转。
    接下来是微信开放平台和SDK注册方法填写相同UniversalLink,注意此次微信的要求https开头 /结尾,列如:https://help.wechat.com/


    同理,在微信SDK注册方法中不管是友盟还是shareSDK填写的都应该和这个一样
//微信注册
[WXApi registerApp:wxID universalLink:@"https://help.wechat.com/"];

  • 6.也许这个时候你迫不及待想去调起微信,结果一定是失败的,因为此次更新后,还要添加一个新的Schemes。

    在Xcode中,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如下图所示)。

  • 7.回调测试
    当APP被UniversalLink调起后,可以在delegate中使用如下方法进行对应处理,获取相关paths信息等(这里使用了微信的处理方式)注:UniversalLink调起不执行application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options:等方法,而执行如下方法。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRest
oring>> * __nullable restorableObjects))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

五、总结

配置的过程请一定要仔细,大致可分为2个阶段。
一、优先完成safari中测试,能提示打开APP
二、再配置微信相关内容
本文涉及填写URL地方还是较多,发现很多朋友问我的时候其实都是填写url错误了。还是请多多核对本文中提到的关键内容,在此我也整理一下填写的地方:
假设你的链接是:https://help.wechat.com
GET请求地址应为
https://help.wechat.com/apple-app-site-association
https://help.wechat.com/.well-known/apple-app-site-association
Xcode-Associated Domains中应为
help.wechat.com
safari中测试应为
https://help.wechat.com
微信开放平台填写的和注册方法时应为
https://help.wechat.com/

温馨提示:

如果没有条件自己配置apple-app-site-association文件,可以直接到shareSDK等平台后台->分享设置 去配置UniversalLink信息。


做完这些后,应该就可以成功调起微信了,如果还有什么特殊的需求,建议多仔细阅读苹果官方文档,和微信更新的文档。

iOS通用链接(UniversalLink)配置详细流程 如果 Universal Link 配置成功,在iOS自带Safari浏览器中,打开 Universal Link 链接,下拉会出现应用入口,点击“打开”可以跳转至原生App;paths:是一个支持的路径列表字符串数组,可以是一个也可以是多个,用于过滤可以跳转到App的链接,支持通配符*,通配符表示允许该域名下的任意路径。是由开发者自定义的,没有限制,任何App都可以用同一个名字,有些钓鱼App可以 设置知名的APP 的URL Scheme 来欺骗用户。如果一个域名下面有多端APP,可写作。 阅读详情

相关推荐

uniApp微信分享必备:5分钟搞定iOS Universal Link配置(含常见错误排查)

本文详细解析了在uniApp中配置iOS Universal Link以实现微信分享功能的完整流程,包括核心原理、苹果开发者后台配置、服务端文件部署及常见错误排查。特别针对微信生态适配和manifest.json配置提供了实战指南,帮助开发者快速解决Universal Link验证失败、微信跳转异常等问题。

weixin_29206669的博客 544

iOS 微信 唤醒客户端失败&注册失败&需要UniversalLink 的解决方案

一、微信SDK1.8.6.1 更新之后 注册方法变更 + (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink; 其中 universalLink 微信开发者Universal Link 所以更细之后 友盟和shareSDK 等三方登录托管平台都需要相关的配置 参考:微信官网文档 iPhone 的最...

疯狐狸的博客 4717

ANSYS拓扑优化基础实例

唐深51CAE 2018/6/10 拓扑优化在工程设计中,常用于机械结构概念设计和轻量化设计,ANSYS通用有限元分析软件提供了强大的拓扑优化功能,本文将通过一个简单实例进行展示。 一、赵州桥 赵州桥又称安济桥,坐落在河北省赵县洨河上,建于隋朝年间公元595年~605年,由著名匠师李春设计建造,距今已有约1500年的历史,是当今世界上现存最早、保存最完整的古代敞...

TQT_CAE的博客 6027

ShareSDK iOS端 UniversalLink生成最佳实践

Universal Link (通用链接)是Apple在iOS9推出的一种能够方便的通过传统 HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和APP。

apkkkk的博客 1645

鸿蒙设备部署轻量级Web服务器NexServer实践

Web服务器作为互联网基础设施的核心组件,其轻量化部署在移动终端领域具有重要实践价值。本文以鸿蒙操作系统为技术载体,深入解析微内核架构如何通过资源隔离和分布式软总线实现服务高可用。重点探讨NexServer这一专为嵌入式场景设计的轻量级服务器,其ARM原生支持特性与15MB级内存占用,在HTTP/2协议处理与WebSocket通信中展现出独特优势。在智能家居控制面板、边缘计算节点等物联网典型场景中,鸿蒙设备结合NexServer的方案相比传统Nginx部署可降低60%资源消耗。通过实测数据对比,该组合在50

weixin_30411239的博客 481

手撕代码系列:Conv2D

在实际的神经网络中,每个卷积核都会对应一个偏置值。这意味着如果网络有多个卷积核,每个卷积核的输出都可以加上对应的偏置。

qq_55794606的博客 910

更新sdk_工作杂碎:iOS 微信SDK更新后需要UniversalLink解决方案

一:缘由那天手贱更新了一下第三方库。发现微信更新1.8.6的SDK后,在delegate注册时多了一个universalLink参数(如下)WXApi.registerApp(appid: String, universalLink: String)不管你是友盟还是fluwx等等,只要是最新版的应该都需要这个参数,当时我就一脸懵逼了,啥玩意啊?于是去看了下微信官方文档,把自己踩坑经验总结下来。本文...

weixin_35002851的博客 320

泛微E8流程监控指南:如何用SQL实时追踪审批节点状态?

本文详细介绍了如何利用SQL实时监控泛微E8系统中的审批流程状态,包括核心数据表结构解析、全链路监控SQL实战以及智能预警机制设计。通过数据库直接查询和状态关联分析,帮助企业快速定位卡顿节点,提升流程效率。适用于需要优化OA系统流程管理的企业IT人员和业务主管。

weixin_30687051的博客 439

Cocos Creator iOS微信登录接入实战:从原生桥接到Universal Links完整指南

在移动应用开发中,OAuth授权登录是常见的用户身份认证方式,而微信登录因其庞大的用户基础成为众多App的首选。在iOS平台上,微信登录的实现依赖Universal Links与URL Scheme的回调机制,这与Android截然不同,也是开发者容易踩坑的地方。通过理解OAuth的授权码交换流程,我们可以更清晰地把握客户端与服务器的职责边界。对于使用Cocos Creator进行跨平台开发的团队,通过原生桥接层(如Objective-C封装微信SDK)配合JS轮询事件队列,是一种稳定且可控的集成方案。相比

weixin_34220179的博客 421

解决倍福ADS通信错误1861和6:一次完整的TwinCAT3路由配置与故障排查实录

本文详细解析了在Linux系统上解决倍福ADS通信错误1861和6的完整流程,包括TwinCAT3路由配置与故障排查。通过实例演示了如何正确配置AMS NetID、使用adstool工具添加静态路由,以及高级网络抓包分析技巧,帮助工程师快速定位和解决通信问题。

weixin_30875157的博客 520

头歌平台 操作系统课堂练习2.3:系统调用

使用 gdb 调试内核,跟踪到 main 函数入口的方法与之前实训一样。系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?系统运行时,执行的前 3 个系统调用的编号和名字分别是什么?本关卡使用版本 1 内核进行分析,版本 1 内核文件存放在。为了完成本关任务,你需要:跟踪系统调用的发生。此时,系统调用号存放在寄存器 eax 中。

lazbuyaotoutu的博客 2万+

iOS微信分享提示“未验证应用”的解决,配置 Universal Link

官方文档 配置 Universal Link 创建一个json文件,格式固定,无需更改。 {     "applinks": {         "apps": [],         "details": [{             "appID": "teamID.bundleID",     &n

xymspace 4182

iOS 通用链接(Universal Link)配置详解

iOS 通用链接(Universal Link)配置 什么是通用链接? 通用链接是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app,不需要额外的任何操作。如果没有安装对应的app,那么点击链接会使用Safari打开网页。在iOS9以前,对于各种浏览器,Safari中唤醒app的需求,我们通常是只能使用scheme的方式。 为什么要突然改用通用链接的配置方式? 我们的项目中唤起第三方ap

u013712343的博客 4774

【YOLOv8系列】YOLOv8的webUI界面设计;通过Streamlit实现YOLOv8的可视化交互界面设计

但是我为了避免重复性的工作,且为了避免重复安装之前(安装pytorch和yolov8时)已经安装好的库,因此写了一个python脚本进行安装;需要提前在有网络连接的电脑上下载所有必要的依赖项,然后将这些文件传输到离线的机器上进行安装。脚本将自动跳过已安装的包,并安装其余的 .whl 文件。在离线的机器上,切换到包含下载好的文件的目录。证明我们的streamlit安装成功了。证明你的streamlit安装成功了。第一步:在有网络连接的电脑上下载。第二步:将下载的文件传输到离线机器。文件)传输到离线的机器上。

AnChenliang_1002的博客 1567

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uni-app X 微信支付 UTS 插件 uni-payment-wxpay 源码解析与接入指南

本篇技术指南围绕开源仓库 uni-app 中的 `uni-payment-wxpay` UTS 插件展开,讲解如何通过 UTS 语法封装微信原生支付 SDK,在 uni-app X 的 Android、iOS、HarmonyOS 三端调用 `requestPayment` 拉起微信支付,并深入剖析其接口定义、跨平台实现、`orderInfo` 参数解析与错误码约定。读完本文,你将掌握该插件的目录组

gitblog_00075的博客 669

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

微信小程序与APP双向跳转全攻略:SDK接入到web-view落地

从移动端开发中常见的跨应用跳转需求讲起,解释APP与小程序之间互跳的技术原理。先介绍微信开放平台SDK拉起小程序的完整流程,以及URL Scheme、Universal Link在H5页面中的使用方式;再分析小程序侧通过web-view承载H5中转页实现返回APP的方案。此类跳转技术广泛应用于电商、营销、用户召回等场景,能显著提升多端联动体验。本文结合工程实践,梳理了参数传递、业务域名配置、异常兜底等关键细节,帮助开发者快速落地APP与微信小程序的稳定互跳能力。

weixin_33881140的博客 570

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

uni-app x 的 iOS App 配置指南:图标、启动界面、可选模块与 Info.plist 全解析

在 uni-app x 跨平台框架中,iOS 平台的诸多原生能力(图标、启动界面、方向、登录/定位/支付等三方模块、URL Scheme、关联域、权限描述)都集中在项目的 `manifest.json` 的 `app-ios` 节点中统一配置。本篇指南以 [iOS App配置文档](https://link.gitcode.com/i/5aab6f9f3e69a634ff3ece56aa7ba12

gitblog_00956的博客 490

移动端应用间跳转:Android与iOS的URI Scheme与Universal Links实现

应用间通信是移动开发中的基础技术,它允许不同应用之间安全地传递数据和功能。其核心原理是通过操作系统提供的URI Scheme或Universal Links/App Links机制,实现应用间的相互唤醒与跳转。这项技术的价值在于能够打破应用孤岛,实现跨应用的功能互补与用户体验的无缝衔接,例如常见的跨应用登录、内容分享和营销活动引流等场景。在Android平台上,主要通过Intent和自定义URI Scheme实现;而在iOS平台,则经历了从自定义URL Scheme到更安全、体验更好的Universal L

weixin_33851604的博客 481

UniversalLink通用链接

什么是Universal Link iOS9 新引入的一个功能,是通过传统HTTP链接来启动App的技术,可以使用相同的网址打开网站和App。通过唯一的网址,就可以链接到App中具体的视图,不需要特殊的scheme。如果用户没有安装App则链接到对应的普通网页。无缝连接Web-App ,备忘录-App,信息-App之间的跳转。(在iOS 9以前,我们从外部启动App都是通过URL Scheme实

long458的专栏 1万+

iOS 唤起APP之Universal Link(通用链接)

网上看到这篇关于IOS Universal Link的文章,很不错,这里分享一下。iOS 唤起APP之Universal Link(通用链接) - Code.Rookie - 博客园 (通用链接)是Apple在iOS9推出的一种能够方便的通过传统链接来启动APP的功能,可以使用相同的网址打开网址和APP。当你的应用支持(通用链接),当用户点击一个链接是可以跳转到你的网站并获得无缝重定向到对应的APP,且不需要通过浏览器。如果你的应用不支持的话,则会在中打开该链接。 在苹果开发者中可以看到对它的介

zzhongcy的专栏 7982

iOS 配置通用链接(Universal Link)服务端和开发者后台都配置好了,还是跳转不到App

Universal Link 是苹果在 WWDC 2015 上提出的 iOS 9 的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个 Https 链接来直接启动您的客户端应用(手机有安装 App)。对比以往所使用的 URLSheme,这种新特性在实现 web-app 的无缝链接时,能够提供极佳的用户体验。使用前请阅读苹果官方文档 - Support Universal Links。

IT_Scratch的博客 1万+

IOS Universal Link (通用链接)配置和使用

Universal Link 是 iOS9 推出的一项功能,使你的应用(微信,微博等)可以通过传统的HTTPS链接来启动APP,而不是使用 scheme 的方式。 如何理解Universal Link(通用链接) Universal Link(通用链接):看起来就是一条普通的https链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP...

周为的博客 1万+

iOS——通用链接(Universal Link)通过传统HTTPS链接来启动APP的功能

一、Universal Link(通用链接) 简介 Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和APP。当你的应用支持Universal Link(通用链接),当用户点击一个链接是可以跳转到你的网站并获得无缝重定向到对应的APP,且不需要通过Safari浏览器。如果你的应用不支持的话,则会在Safari中打开该链接。 Universal Link(通用链接):看起来就是一条普通的https链接,当

cym_bj 5234

iOS微信授权登录中Universal Link(通用链接)的配置 ,解决ios13,ios14微信支付不走回调问题

这里写自定义目录标题 简介 Unuversal Links介绍 配置Unuversal Links 1.苹果开发者账号打开配置 2.XCode工程配置 3.配置JSON文件 4.后台服务器配置 5.微信开放平台配置 6.初始化代码 简介 随着iOS和微信SDK版本的更新,有变化。 新版本,需要配置Unuversal Links。没办法,填坑工作开始。 Unuversal Links介绍 Seamlessly link to content inside yo.

小天空的博客 8825
上一篇: iOS经典讲解之通过setValue: forKeyPath:设置属性(iOS 13不支持该方式修改私有属性!!!)
下一篇: iOS经典讲解之播放本地音频文件
刘新林
博客等级 码龄11年 72粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值