2024-11-26 06:48:21
在 app 开发中我们经常需要从浏览器,Safari中去唤醒 app , iOS 9 之前我们通过配置 scheme 从而实现这种跳转,但是这种方式需要提前判断系统中是否安装了能够响应对应 scheme 的 app ,这种方式在微信中是被禁用的。
Universal Links 是 iOS 9 推出的一项功能,我们可以通过配置 Universal Links 使用户能够通过一个链接进入 app 或者指定页面,这个不会被微信禁用。
paths组成 :设定你的app支持的路径列表,只有这些指定的路径的链接,才能被app所处理。 * 的写法代表了可识别域名下所有链接。
注意⚠️: Domains 中加入的链接,必须以 applinks: 开头,然后去除你的域名前的 Https 以及最后的 / ,例如你的域名是 https://www.apple.wwdc.com/ ,那么 Domains 中加入的就是 applinks:www.apple.wwdc.com 。
配置一个该域名下可以访问的链接地址,然后复制该链接到 Safari 中直接访问,然后在出现的网页中下拉,当出现 在“XXX”App中打开 即可,如下图:
注意⚠️: 只有当前 Webview 的 url 域名,与跳转目标 url 域名一致时, Universal Link 才会生效。
当用户点击对应的链接时,会直接进入 app ,如果我们需要监听链接并做出不同的处理,我们就需要在 AppDelegate 中实现对应的方法,否则就是直接进入 app 。
注意⚠️: 该方法是在进入 app 之后才会进行调用
在使用旧版本微信 SDK 时,分享会出现 未验证 现象。这时候需要我们更新 SDK 并进行相应的 Universal Links 配置。
在微信后台加入你设置的域名配置,如 https://www.apple.wwdc.com/
注意⚠️: 通过自检方法我们能够知道 Universal Links 配置是否成功。另外未验证问题不是实时更新的,你会发现你更新了 SDK 也不会立刻生效,需要等待从 未验证列表 中移除为止。
最明显的就是效果就是只有第一次会通过微信验证,后面就不会再调用微信验证了。
注意⚠️: 接入微信之后必须 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler 方法中加入 [WXApi handleOpenUniversalLink:userActivity delegate:self] ,否则会导致微信的回调 -(void)onReq:(BaseReq*)req 不执行。
注意⚠️:
前端开发经常面临跨域问题,必须要求跨域,如果不跨域,就不行。
只有当前 webview 的 URL 域名,与跳转目标 URL 域名不一致时, Universal Link (通用链接)才生效。