美文网首页
iOS Universal Links详细配置 适配微信sdk1

iOS Universal Links详细配置 适配微信sdk1

作者: 贤宇 | 来源:发表于2020-07-09 18:00 被阅读0次

    为了适配微信最新sdk, 最近搞了一下Universal Links, 好处就不多说了, 说一下如果不适配的坏处

    • 部分机型分享后显示"未验证应用"
    • 每次打包上传都有UIWebview使用有警告, 再不适配就上不了线了

    微信sdk1.8.6.1 更新内容

    • UIWebview切换成WKWebview
    • 支持Universal Link拉起微信以及返回App

    微信注册的方法只有下面这一个, 必须填写Universal Links, 所以只有搞一下Universal Links了

    + (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink;
    

    Universal Links配置

    第一步 配置apple-app-site-association文件

    1. 创建名称为apple-app-site-association的json文件, 一定不能带后缀, 文件内容为
      官网例子
    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "9JA89QQLNQ.com.apple.wwdc",
                    "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
                },
                {
                    "appID": "ABCD1234.com.apple.wwdc",
                    "paths": [ "*" ]
                }
            ]
        }
    }
    

    自己项目例子 按照微信写的appID以微信为例

    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "HQH47S9JSQ.help.wechat.com",
                    "paths": [ "/app/*" ]
                }
            ]
        }
    }
    

    内容解释

    • details: 是个数组, 可以配置多个app
    • appID: TeamID + '.' + BundleID, 看上面例子应该很好理解, TeamID在哪儿呢, 下面会提到.
    • paths: 域名后拼接的路径, 不能带query参数, 微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/*, 按照微信配置的例子, Universal Links就是https://help.wechat.com/app
    1. apple-app-site-association文件上传服务器
      服务器一定要支持https, 让服务端的同学把json文件上传到域名的根目录下或者.well-known目录下,苹果会优先去.well-known文件夹下找, 如果没有就去跟目录下载, 我们是两个地方都传了.
      https://xxx/apple-app-site-association
      https://xxx/.well-known/apple-app-site-association
      上传完成后, 点击上面的链接应该是下载json文件就对了, 打开看一下内容对不对, 一定是下载json文件, 不是直接打开

    上传完成后可以先验证一下苹果验证工具, 输入https://xxx/.well-known/apple-app-site-association, 等出现下图提示就可以

    链接验证

    ***第二步 开启Associated Domains ***

    1. 登录公司的开发者账号, 找到Identifiers-->appId, 勾选Associated Domains
      下面有第一步要的TeamID

      Associated Domains1
      点击保存时会弹窗提示
      提示
      大概意思是,使用该appId的配置文件都会无效,必须重新生成, 所以只要用到该appId的文件都要重新配置, 下图看出, 重新配置的有推送证书pp描述文件, 配置完后下载更新.
      证书配置
    2. 打开Xcode 添加Associated Domains


      Associated Domains2

    添加Universal Links


    Associated Domains3
    • Domains: 内容为applinks:+域名, 例如上面的例子为applinks:help.wechat.com, 不用加/app/*

    添加完后项目中会多一个.entitlements文件


    .entitlements

    --->到此Universal Links就配置完成了: https://help.wechat.com/app

    第三步 验证Universal Links
    验证方式找了两种

    1. 备忘录验证
      打开备忘录输入https://help.wechat.com/app点击会直接跳转自己的app, 或者长按会弹窗 在"app"中打开
    2. Safari浏览器验证
      在浏览器中输入https://help.wechat.com/app, 打开网站后一定要下拉, 会有类似这样的弹窗, 点击打开会直接跳转APP.
      Safari验证

    第四步 微信配置Universal Links

    1. 微信要求填写格式是https开头,"/"结尾, 所以填写https://help.wechat.com/app/
      微信平台
    2. AppDelegate配置
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 注册
        [WXApi registerApp:kWXAppID universalLink:kUniversalLinks];
        // 测试函数 step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功
        [WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult * _Nonnull result) {
            NSLog(@"-> %ld %@",step, result);
        }];
    }
    
    // 通用链接会调用
    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
            NSURL *webpageURL = userActivity.webpageURL;
            if ([webpageURL.absoluteString isEqualToString:kUniversalLinks]) {
                // 如果UniversalLinks跳转 会到这里
                NSLog(@"%@",webpageURL);
            } else {
                [[UIApplication sharedApplication]openURL:webpageURL];
            }
        }
        return [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
    

    注意点

    1. 如果什么都配置正确了, 还是调不起app, 就把app删除了重新安装一下.
    2. 如果什么都配置正确了, 分享到其他app里面就不跳转了, 是因为未跨域导致的, 如:分享到微信的链接是https://help.wechat.com/share.html, 然后该网页中的“在app内打开”按钮配置的通用链接为https://help.wechat.com/index.html.
      跨域的意思是说, 通用链接和调用通用链接的网页不能是同一域名. 即如果通用链接域名为help.wechat.com, 则通用链接所处的网页域名就不能是help.wechat.com。
    3. 如果所有都配置完成了, 微信分享登录都可以, 但是还会出现"未验证应用", 是因为未验证应用名单非实时更新,只有前一天有接入新SDK(1.8.6版本以上)并且有正确调用记录,第二天才会移除出名单, 并且前一天正确分享次数在10次以上.
    4. 添加测试函数checkUniversalLinkReady后,每次启动都会跳转微信,然后再跳回app,注释掉就不会再跳微信了。

    微信接入文档
    未验证应用排查文档
    苹果官网Universal Links

    如果对你有所帮助请点个赞呗👍

    相关文章

      网友评论

          本文标题:iOS Universal Links详细配置 适配微信sdk1

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