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

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. File、FileReader、Base64、Blob基本使用以及Buffer、ArrayBuffer之间的转换

    File文件 (File)对象获取文件的信息.实际上,File 对象是特殊类型的 Blob,Blob 的属性和方法都可以用于 File 对象.在js中,一般通过input元素,点击上传文件成功之后返回 ...

  2. 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

    解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题 需要检查的步骤: 1.是否map ...

  3. 【CTO变形记】高维视角,跳出“农场主与火鸡”

    前言:看待人事物的角度决定了我们的思考方向和处理事情的方式.在这些认识人事物的过程中,导致了一些"事故"发生:就好比"以手指月",原本要看"月亮&qu ...

  4. eigen的简单用法汇总

    Eigen帮助文档的地址:http://eigen.tuxfamily.org/dox/pages.html Eigen的论坛:http://forum.kde.org/viewforum.php?f ...

  5. SpringMVC的数据绑定与视图解析

    SpringMVC的数据绑定: 在后端直接得到前端的HTTP中的数据. HTTP请求中的传输的参数都是String类型,Handler业务方法中的参数是开发者指定的数据类型,int Integer,, ...

  6. dataset的基本使用

    在折线图(柱状.散点图类似)中使用 案例一(默认方式) let option={ dataset:{ source:[ ["1","2","3&quo ...

  7. osx使用alfred集成有道查词

    概述 使用 mac 的同学应该经常会使用 alfred 这个软件, 主要能随时能够通过一个快键键打开查询窗口, 方便的搜索或打开软件, 文件等等, 同时也可以集成脚本方便实现其它的功能. 在日常使用的 ...

  8. js原型链污染详解

    前言 之前打某湖论剑,两道js的题,给我整懵逼了,发现以前都没对js做过多少研究,趁着被毒打了,先研究一波js原型链,未雨绸缪. 基础 protype 首先我们研究js原型链,得搞明白原型是什么,这里 ...

  9. JZOJ 4496. 【GDSOI 2016】第一题 互补约数

    \(\text{Problem}\) 求 \[\sum_{i=1}^n \sum_{d|n} \gcd(d, \frac{i}{d}) \] 有 \(n \le 10^{11}\) \(\text{A ...

  10. JZOJ 1967.【2011集训队出题】聪聪可可

    题目 [2011集训队出题]聪聪可可 思路 看看做做 阴阳 这道题 极力推荐 自从做了这道题后,这些题就变成秒切的题了 很容易想到求节点到分治中心的距离,然后 \(\bmod 3\) 那么在求根节点一 ...