美文网首页
Universal Links适配

Universal Links适配

作者: kevin_lu | 来源:发表于2020-03-03 18:00 被阅读0次

    一:适配原因

    由于苹果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


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

    三:配置微信开发者平台

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


      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<id<UIUserActivityRest
        oring>> * __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)


    image

    五:问题排查

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

    请检查是否添加weixin和weixinULAPI:


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

    相关文章

      网友评论

          本文标题:Universal Links适配

          本文链接:https://www.haomeiwen.com/subject/nmzhlhtx.html