iOS的Universal links及微信sdk中Universal links的使用的注意点

关于Universal links的概念什么的,不用介绍了,网上一大堆的概念介绍,本文着重记录下Universal links的配置及微信sdk中Universal links的使用。

Universal links的配置

  1. 登录开发者网站,找到需要配置的bundle id,如下图:


    iOS的Universal links及微信sdk中Universal links的使用的注意点_第1张图片
    1590724008062.jpg

点击进入,配置该bundle id的Capabilities,如下图:


iOS的Universal links及微信sdk中Universal links的使用的注意点_第2张图片
1590724259636.jpg

本页面需要的操作:

  • 记录Team ID
  • 将capabilities中的Associated Domains勾选,然后保存操作。重新下载对应的profile文件,并安装。
  1. 打开xcode,找到Signing&Capabilities,找到Associated Domains,如果找不到Associated Domains,点击左上角的Capbility添加即可。如下图:
    iOS的Universal links及微信sdk中Universal links的使用的注意点_第3张图片
    1590724761757.jpg

    Associated Domains中添加applinks:域名,示例如下:
    applinks:www.test.com
    关于此处的域名,稍后会做讲解。
    完成配置后,xcode会自动生成.entitlements文件。

3.配置apple-app-site-association。创建一个纯文本文件,不带后缀名,命名为,内容如下:

{
"applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamID.Bundle Id",
                "paths": ["*"]
            }
        ]
    }
}

注意:此处的appID的构成,TeamID就是上面记录的TeamID。
文件创建完成后,将之上传至HTTPS服务器根目录或者.well-known这个子目录下。
此处要确保:

  • 使用https://domain.com/apple-app-site-association或者https://domain.com/.well-known/apple-app-site-association能够访问到(能够下载或者返回文件内容即可)。这里的域名,就是2中配置xcode的Associated Domains时候提到的域名。
  • 也可以使用苹果的验证网站来验证文件是否能够被访问到。若应用未上线,可能出现如下结果:
    iOS的Universal links及微信sdk中Universal links的使用的注意点_第4张图片
    苹果验证网站的验证结果
  • 出现该结果,说明配置文件apple-app-site-association正确
  • 出现404错误,则说明apple-app-site-association文件未上传成功或者使用上面的域名不能访问到。

至此,Universal links配置完毕。

微信sdk中Universal links的使用

写作本文时,用到的微信的openSDK版本是1.8.7.1,该版本强制使用Universal link。参照微信sdk介入指引即可完成介入。但是如果完全按照该指引操作,可能会出现分享的时候,进行二次跳转的异常,具体表现就是:拉起微信后进行授权,然后立刻返回App,然后再次调起微信,这是由于通用链接授权失败,第二次降级为URLScheme方式启动微信。
如果保证了Universal links的配置正确,并且严格按照微信的接入文档执行操作,为什么通用链接授权还会失败呢?
在微信的接入文档中,第二步操作如下图:

iOS的Universal links及微信sdk中Universal links的使用的注意点_第5张图片
微信接入文档第二步

如红字部分所示,“建议Universal links配置path……”。当时,操作到这里的时候,又返回去修改apple-app-site-association文件,配置了path,但是在微信后台中配置的Universal links并没有配置path,App中调用微信openSDK的+(BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink方法的时候也没有带path,这就导致了微信sdk中Universal links校验不通过。
解决方式
在微信公众平台注册的通用链接要带路径,App中调用微信openSDK的+(BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink方法的通用链接参数也一定要带路径,保持一致,单纯的域名就会导致二次降级启动。
正确配置后,从微信返回的通用链接形式是:
https://域名/路径/微信平台的AppID

你可能感兴趣的:(iOS的Universal links及微信sdk中Universal links的使用的注意点)