Universal Links适配

一:适配原因

由于苹果iOS 13系统版本升级,因为没有配置Universal Links导致微信和QQ分享失败,微信SDK在1.8.6.1版本进行了适配,支持通过Universal Links方式跳转完成应用安全校验,提升使用流程安全性。开发者需更新iOS 1.8.6.1版本SDK,并按苹果官网的要求,创建应用的Universal Links服务,随后在微信开放平台填写应用的Universal Links信息。

微信开发者平台,包括QQ目前新建应用都必须配置Universal Link,老本版存量问题,微信开发者平台公告:2020年3月起逐渐收回老版本功能。 QQ互联公告:将于2019年12月1日进行Universal Links校验,请开发者及时更新SDK3.3.7版本进行适配。

因为项目中使用的ShareSDK进行第三方分享。因此更新ShareSDK配置Universal Link就是必须要做的。

二:配置Universal Link

  1. 准备一个https的域名。
    将配置好的apple-app-site-association存放在域名根目录下,或者放根目录的(.well-known)的子目录下,两者选一个。 可以多个app可共用同一个配置文件。
  2. 制作apple-app-site-association文件。
    需要制作apple-app-site-association文件并添加自己的配置项,apple-app-site-association不能带后缀名。

appID:是TeamID+BundleID的组合
paths:是用于区分不同APP的路径,每个项目配置自己的唯一标识,必需以通配符*结尾。
针对微信和QQ每个项目需要配置两个path:

  • 一个为微信开放平台格式如:"/标识app唯一的字符串/",如:"/appdemo1/";
  • 一个按照QQ互联平台格式:"/qq_conn/qq互联appId/*",如:"/qq_conn/1101150000/*";

修改完 apple-app-site-association 文件发给服务端同学进行更新。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TeamID.com.xxx.app1",
                "paths": [ "/app1/*","/qq_conn/1101150000/*"]
            },
            {
                "appID": "TeamID.com.xxx.app2",
                "paths": [ "/app2/*","/qq_conn/1101160000/*"]
            },
        ]
    }
}
  1. 在appstore对应的bundleID开启Universal Link服务,更新描述文件后下载安装。

  2. 在Xcode开启Associated Domains,并填写对应的Domains。
    这里只需要填写Domain就行不需要path,例如填写:applinks:help.wechat.com


    Universal Links适配_第1张图片
  3. 测试配置是否成功。
    重新打包安装app,然后在手机Safari浏览器中输入:域名+path (例如:https://help.wechat.com/xxxx/ )并下拉,看是否有跳转App的链接。

    Universal Links适配_第2张图片

三:配置微信开发者平台

  1. 登录微信开发平台,进入对应的项目控制台,更新Universal Link为你配置的domain+path。


    Universal Links适配_第3张图片
    image
  2. 更新shareSDK到最新版本,微信API初始化的时候需要设置UniversalLinks,必需和开放平台设置的一致。
[WXApi registerApp:weiXinAppId universalLink:@"https://xxx.xxxx.com/path/"];
  1. 在AppDelegate 添加事件回调
    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * __nullable restorableObjects))restorationHandler {
        return [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
  1. 更新ShareSDK初始化方法
[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
        [platformsRegister setupQQWithAppId:QQAppId appkey:QQAppSecret];
        [platformsRegister setupWeChatWithAppId:weiXinAppId appSecret:weiXinAppSecret universalLink:@"https://xxx.xxx.com/path/"];
    }];

四:配置QQ互联平台

修改universalLink配置(请注意只需要输入host,如:xxx.xxx.com)


Universal Links适配_第4张图片
image

五:问题排查

  1. 分享提示失败
    检查 BOOL bol = [WXApi registerApp:weiXinAppId universalLink:@"https://xxx.xxx.com/path/"] 注册的时候返回值如果为No,有可能是URL Scheme 配置错误或遗漏。

请检查是否添加weixin和weixinULAPI:


Universal Links适配_第5张图片

备注:如果遇到其他问题可评论留言,第一时间分享解决方案~

你可能感兴趣的:(Universal Links适配)