Universal Links 的简单配置与使用

为了适配iOS13&xcode11,需要更新一些库,更新微信支付SDK的时候,有用到Universal Links(iOS 9之后),从此认识了Universal Links,可以理解为与URL Schemes相似,用来唤醒app&跳转app用的。这里不介绍Universal Links是什么(可以查看官网解析),只做简单配置与使用。

一、配置apple-app-site-association

新建apple-app-site-association文件(json格式),重要事情说3遍(不带后缀,不带后缀,不带后缀),如下:

{
    "applinks": {
    "apps": [],
    "details": [{
        "appID": "D3KQX62K1A.com.example.photoapp",
        "paths": ["/albums"]
        },
        {
        "appID": "D3KQX62K1A.com.example.videoapp",
        "paths": ["*"]
        }]
    }
}

details的值作为字典数组的JSON表示,每个应用程序一个字典。对于每个特定于应用程序的字典,包括一个appID和paths:

appId

格式为:.

解析一下,登录开发者找(Xcode里的不准确),如图:


image.png

paths

实际上就是限制哪些路径可以唤醒app,哪些路径不能唤醒app,或者通过路径唤醒不同的app或通过路径判断app跳转哪个页面,格式:
  "paths": [ "/videos/collections/*", "NOT /videos/samples/2010/*", "/videos/samples/201?/*"]
 
 *代表了可识别域名下所有链接
 /wwdc/news/来指定某一个特殊的链接
/videos/wwdc/2015/*, 来指定网站的某一部分

假设你公司有几个APP,都需要用到Universal Links,那么就可以用paths区分,不需要分别上传多个服务器。假设有A、B、C 3个APP,这可以这样填写

 {
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "D3KQX62K1A.com.example.photoappA",
            "paths": ["/appA"]
            },
            {
              "appID": "D3KQX62K1A.com.example.videoappB",
              "paths": ["appB"]
            }],
            {
              "appID": "D3KQX62K1A.com.example.videoappC",
              "paths": ["appC"]
            }]
        }
 }

需要注意的是后面的Universal Links需要添加paths来区分,比如:

 https://baidu.com/appA/

二、上传apple-app-site-association到服务器

把apple-app-site-association文件放到服务器的根目录下,也可以放到.well-known这个子目录下。(注意:这里需要支持https的服务器,这个根据公司和自己的需求可以放在任意的服务器,只要能访问就行了)

比如放在域名为www.baidu.com的域名下,那么链接
https://www.baidu.com/apple-app-site-association
可以访问

三、实际使用(微信支付,这里只讲Universal Links的使用,具体的支付不详细讲)

1.到微信开放平台注册应该,填写app信息最后一行有一个Universal Links(代码注册微信sdk时要用到),这里填写以https开头,以/结尾,假如域名为baidu.com,则Universal Links为

https://baidu.com/
如果需要paths来区分跳转不同的app,这后面需要添加paths,如:
https://baidu.com/appA/

注册微信sdk时,WXuniversalLink就是这里的Universal Links

[WXApi registerApp:WXappid universalLink:WXuniversalLink];

盗用一下别人的图,我的被领导收藏账号密码了


image.png
  1. 登录苹果开发者后台,在Identifiers找到对应的应用的Identifiers,进行编辑,勾选Associated Domains功能,保存并重新生成配置(自动管理的会自动生成,手动管理的需要重新下载描述文件安装)如图:
image.png

3.在Xcode里面添加Associated Domains

以applinks:开头,后面写上域名,假如域名为baidu.com,这填写为applinks:baidu.com
image.png

完成上面的步骤差不多就OK了,有可能有朋友遇到app一直正在连接微信中,唤醒不了微信,可能你没有重写AppDelegate的方法,

 - (BOOL)application:(UIApplication *)application
  continueUserActivity:(NSUserActivity *)userActivity
   restorationHandler:(nonnull void (^)  (NSArray> * _Nullable))restorationHandler{
    return [WXApi handleOpenUniversalLink:userActivity
                             delegate:self];
}

还有一个问题就是在info.plist添加

LSApplicationQueriesSchemes里分别添加 weixin,wechat, weixinULAPI。
image.png

剩下的微信支付请按照微信文档操作(这里只做唤醒和跳转微信,Universal Links)。

你可能感兴趣的:(Universal Links 的简单配置与使用)