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

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 元素的格式:

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

️下面再来看一下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

[iOS]Universal Link的更多相关文章

  1. iOS 唤起APP之Universal Link(通用链接)

    什么是Universal Link(通用链接) Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和 ...

  2. iOS 禁用`URL Scheme`和`Universal Link`(通用链接)

    为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...

  3. 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!

    对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...

  4. iOS9 Universal Link实现

    先来贴几个比较全面的帖子,看完就差不多了. 1   iOS 9 通用链接(Universal Links) 帖子注意项非常重要,仔细阅读. 自己补充几点: 1 服务器上配置的json文件apple-a ...

  5. iOS9上的Universal Link实现(教程)

    1.Universal Link 理解为苹果官方支持deeplink就行了 2.通过点击HTTP链接启动APP Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自 ...

  6. Universal Link 笔记

    如何实现Universal Link? 简单地说三步,1.把一个配置文件放在指定服务器根目录 2.在Xcode中设置AssociateDomain 3.安装app时,会根据Xcode中设置的Assoc ...

  7. universal link使用

    iOS9之后,苹果推出了universal link方案,该方案较url scheme有明显的改善.url scheme很难做到唯一. 而 universal link却是你自己控制的. 1.有一个H ...

  8. 钉钉 & URL Scheme & Universal Link & Deep Link

    钉钉 & URL Scheme & Universal Link & Deep Link DD link https://www.cnblogs.com/xgqfrms/p/1 ...

  9. iOS Universal Links(通用链接)

    公司的运维,发现最近大量的请求 /.well-known/apple-app-site-association这个文件,造成了大量的404,可是这是谁请求的呢? 其实是苹果从iOS9.3开始更改了通用 ...

  10. 微信、QQ添加Universal Link

    官方说明 1. Universal Links是什么 Universal Links(通用链接),是苹果在iOS9之后,提供的一种"可通过传统HTTP链接来跳转APP"的能力. 该 ...

随机推荐

  1. Python读取大量Excel文件并跨文件批量计算平均值

      本文介绍基于Python语言,实现对多个不同Excel文件进行数据读取与平均值计算的方法.   首先,让我们来看一下具体需求:目前有一个文件夹,其中存放了大量Excel文件:文件名称是每一位同学的 ...

  2. Avalonia 实现动态托盘

    先下载一个gif图片,这里提供一个gif图片示例 在线GIF图片帧拆分工具 - UU在线工具 (uutool.cn) 使用这个网站将gif切成单张图片 创建一个Avalonia MVVM的项目,将图片 ...

  3. 【Windows】ip地址修改器v5.0.5.4 修改ip更简便

    ip地址修改器v5.0.5.4 修改ip更简便 IP地址修改器,一款能够快速的切换IP地址,在几个不同的固定IP之间进行切换,手动输太麻烦,所以可以用到这款IP地址修改器! 下载 ip地址修改器v5. ...

  4. 为K8S集群准备Ceph存储

    随着K8S存储接口逐渐成熟并顺势推出CSI接口规范后,原来"in-tree"(树内)模式的很多存储插件也逐步迁移到了"out-of-tree"(树外)模式的CS ...

  5. C语言的输入格式

    include <stdio.h> int main() { printf("hey man/n"); return 0; return的意思是返回 } include ...

  6. 安卓逆向 IDA 动态调试 案例1

    adb forward tcp:23946 tcp:23946 adb devices adb shell su cd /data/local/tmp ./android_server adb she ...

  7. [清华集训2016] Alice 和 Bob 又在玩游戏

    \(\text{Solution}\) 第一道有向图 \(SG\) 函数的博弈论 有根树,设 \(f[x]\) 表示以 \(x\) 为根子树的 \(SG\) 值 对于分裂的图的 \(SG\) 值为每个 ...

  8. GPS地图生成01之概述

    图片来源: Author: Tang Email: jianbo.tang@csu.edu.cn

  9. Linux操作命令(四) 1.which命令 2.whereis命令 3.locate命令

    1.which命令 which 命令的作用是,在 PATH 变量指定的路径中搜索可执行文件的所在位置.它一般用来确认系统中是否安装了指定的软件 确认是否安装了 gcc:which gcc 查看 cd ...

  10. 前端js下载excel

    // 1.文件流下载文件: export function axiosPostExport(url, data, fileName, suffix = '.xlsx') {     url = get ...