iOS Universal Links详细配置 适配微信sdk1.8.6以上版本

为了适配微信最新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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350