Write the Code. Change the World.

3月 29

什么是UniversalLink

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

步骤

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)服务端文件 apple-app-site-association 。json格式,而不需要任何后缀。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "VQXXXXXD49G.XXX.XXXX.XXXX",
                "paths": [ "/app/*"]
            }
        ]
    }
}

appID 有两部分组成,在苹果开发者平台的 "Certificates, Identifiers & Profiles" -> "All Identifiers" 选中对应的 id,进去就可以看见配置信息了。就是 App ID Prefix 和 Bundle ID 组成。

paths末尾必须是 * ,最好带一个前缀。免得域名被命中。结尾必须是 * 也是微信相关要求的。

上边这个文件传到服务根目录或根目录下的 .well-known 下。

(2)在苹果开发者账号上一步查看 App ID Prefix 和 Bundle ID 的地方,将 Associated Domains 前边打钩保存。
(3)如果涉及到微信登录,需要在开放平台中设置 Bundle ID 和 Universal Links。Bundle ID 和苹果账号中的Bundle ID 一致。Universal Links 可以定义为上一步中使用的服务域名 + paths 组成。比如: https://xxx/app/

(4) 上边的完成后,需要在 xcode 中配置一些信息。先在 ios/Runner/Info.plist 中加入以下配置:

<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>weixinULAPI</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

(5) 在 xcode 中配置 applinks。依次选择 Runner(Targets)->Signning & Capabilities->All 。在 All 的左边点击 Capability,选中并添加 Associated Domains。然后点击 + 号配置 Domains。比如: applinks:www.xxx.com (applinks 这个是固定不变的 www.xxx.com 是你的服务的地址。只需要域名即可。并且该域名无中间跳转)

(6) 在 xcode 中配置 appid。依次选择 Runner(Targets)->Info->URL Types。点击+号,添加一个。在 URL Schemes 出填写微信开发平台中申请 app 接入的 appid,Role 为默认的 Editor 即可。其他不用填。

到此,基本的配置也算完成了。然后就是测试一下。他们喜欢添加一个记事本,写个Universal Links 链接,然后点击跳转到 safari 试试效果。我这样开始是失败的。反正上边的步骤来了好几次。后来,我直接打包成 app,在APP里调用微信登录。能呼起app 也有效果。也能返回。然后再点击记事本里的链接。直接跳转到 app,而不是进入 safari。证明之前的配置是有效果的。

相关

支持通用链接

允许应用程序和网站链接到您的内容

处理通用链接

测试

参考

https://juejin.cn/post/6844904051042156551

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注