[iOS]Universal Link

从零开始的操作流程在后面,这里把几个坑先挪到前面来 便于查看:

🕳️

apple-app-site-association 只会在APP第一次启动的时候请求一次,因此文件的任何更新的验证都需要APP重新安装或App Store更新。

 

 

iOS 要使用 Universal Link,在客户端和网页端都需要进行配置

首先先看客户端的工作:

 

1.在APP 的工程中添加 Associated Domains

Xcode 11.4 及以上版本,直接在工程的的 Targets - Signing&Capabilities - +Capability - Associated Domains,添加Associated Domains

 

2.在 Associated Domains 进行链接的配置

点击添加按钮,添加要配置的网址链接,格式为   applinks:你的域名     

比如你的域名是 www.hahaha.com, 那么你就配置成 applinks:www.hahaha.com 

 (注意前面不用加https:// 后面也不要加path 或者 /)

3.在 APPDelegate中 增加额外的处理方法

在 APPDelegate 中增加这个方法

在 APP被 universal link 唤醒后,就可以在这个函数内进行额外的处理(比如对path的处理来打开对应的界面等)

#pragma mark Universal Link
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
       // TODO 可以读到URL里的host ,path等内容,根据需求进行处理
    }
      // TODO 根据需求进行处理
    return YES;
}

 

然后看网页端的配置:

1.客户端的开发人员需要给网页端提供一个 apple-app-site-association 的 json文件

创建一个文本文件,不要加后缀名,里面的json内容如下:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "你的TeamID.你的bundleID",
                "paths": [ "/你的path/你的path/", "/你的另一个path/*"]
            }
        ]
    }
}

apps 字段 固定为一个空数组就可以了(为什么会有这种设置-_-) 

我们关注一下 details 的写法:

首先,details 这个字段是一个数组,你可以配置多个元素,也就是说你的同一个域名其实可以打开不同的APP;

来看一个 detail 元素的格式:

1⃣️ appID,由两部分组成,teamID 和 budnleID。

首先是 teamID,去apple开发者网站-account,

https://developer.apple.com/account

点击 - 左侧 Membership ,就可以看到开发者账号的Team ID

 

 TeamID 的格式 类似于 HILIE3CF44 (此处的teamID是编的),

然后我们继续找一下 bundleID,在你的工程中就可以找到

 

 bundleID的格式,类似于 com.orancompany.peal ,(这个ID当然也是编的)

我们把这两个ID用点号拼在一起,就得到了这里需要的 appID : 

  HILIE3CF44.com.orancompany.peal

2⃣️下面再来看一下paths

可以配置多个path;

结尾的 * 号表示这个路径之后不同的子路径也都可行;

只有域名+path的地址才能够唤起appID对应的APP;

paths中的内容,在唤起APP之后,APP中是可以接收到的,所以APP中通过对paths参数的判断,可以进一步打开不同的页面或者做其他的处理逻辑。

如果你这样写一个 detail

{
                "appID": "HILIE3CF44.com.orancompany.peal",
                "paths": [ "*"]
            }

path里只有*,那么只要点击你的域名,就会唤起appID对应的APP。

 

2.让你们的网页开发人员把第一步的这个文件放到域名下的根目录 或者 .well-known (注意点号)目录下

必须支持HTTPS协议;

 

悄悄放一个apple的官方文档:https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/supporting_universal_links_in_your_app

posted @ 2020-07-21 14:25  Oran  阅读(396)  评论(0编辑  收藏  举报