Session:https://developer.apple.com/videos/play/wwdc2020/10098/
引言
通过本文你将会了解到 Universal Links 基本概念,并且深入了解今年 Apple 对 Universal Links 的改进及优化
概述
Universal Links 是 HTTPS 或 HTTP URL,它们使用户可以在 App 中而不是在 Web 浏览器中打开你的内容,从而使你能够提供更丰富的体验。如果你的 App 没有安装,点击链接还是可以使用 Web 浏览器中打开你的内容。如果你还在使用自定义 URL Scheme,应尽快迁移到 Universal Links。
Universal Links 对自定义 URL Scheme URL 有哪些优势?
- 通用。 Universal Links 是标准的 URL 格式,而自定义 URL Scheme 则很特殊,并且只有你的 App 能解析和处理它。
- 安全。当用户安装你的应用时,iOS 会检查你已上传到网络服务器的文件配置,以确保你的网站允许您的应用代表其打开URL。
- 灵活。 即使未安装你的 App,Universal Links 也可以使用。 未安装你的应用程序时,按用户的期望,点击指向你网站的链接可在 Safari 中打开内容。
- 简单。 一个 URL 对你的网站和 App 均适用。
- 隐私。 其他应用可以与你的 App 通信,而无需知道你的 App 是否已安装。
Universal Links 是网站和 App 之间关联关系的重要纽带,接下去我们将会带你深度了解 Universal Links 今年的改进。
Tips:想了解更对关于 Universal Links 更多信息可以查看What's New in Universal Links
Watch OS 平台的支持
今年将会增加支持 Watch OS。Universal Links 在 Watch OS 上的工作方式与在我们其他平台上的工作方式相同。但是其中也有一些差异性,接下来我们一起了解下。
Associated Domains Entitlement 应用范围
Associated Domains Entitlement 是构成 Universal Links 重要配置部分,需要注意的是,如果你想在 Watch OS 中开启 Universal Links 的支持,你需要应用在 WatchKit Extension 中,而不是 WatchKit App 中。
处理机制的区别
在 iOS 和 MacOS 中我们处理和打开 Universal Links 方式如下

然而在 WatchOS 中,处理和打开的处理方式发生了变化

值得注意的是,handle
方法在 WatchOS 不会有处理成功失败的回调,所以在 Watch OS 中打开 Universal Links 失败的情况下会有个提示页面。

SwiftUI 的支持
在 SwiftUI 中,我们也增加了新的 API 支持处理和打开 Universal Links。

匹配模式的改进
在了解新的变化之前,我们先快速回顾一下现有的 Universal Links 都支持哪些匹配模式。

- 星号匹配 0 个或多个字符,并且贪婪地匹配。它将匹配尽可能多的字符。
- 问号匹配一个字符。
- 要匹配至少一个字符,请使用问号,后跟星号。
现在我们将会介绍新的匹配模式
支持大小写忽略的模式匹配
在不支持不区分大小写的匹配模式之前我们会遇到这样的一些问题:在我们的匹配路径中需要识别一个叫做 sourdough 的路径,在不支持不区分大小写之前我们需要这么去配置我们的 apple-app-site-association 文件

这太可怕了,你需要去处理所有的 case。
现在我们带来了新的忽略大小写的功能,针对上面的例子,我们只需要这么处理

嗯,看起来简洁多了,你只需要新增一个配置 caseSensitive
并且把它设置为 false 即可。
此变化将会在 iOS 13.5 和 MacOS 10.15.5 中生效
Unicode URL 支持
URL 通常都是 ASCII 编码,当你有一些非 ASCII 编码参数的时候如中文。你需要将非 ASCII 编码参数进行 URL Encode以满足 URL 编码格式,这显然对 URL 的阅读很不友好,举个例子

很明显,对 URL 所代表代码的参数信息难以去阅读和理解。
所以,我们带来了另外一项新特性:Unicode URL 支持
还是刚才那个例子。我们可以这么去表示:

你只需要增加一个新的配置 percentEncodeed
并且把它设置为 false,这将会禁用基于 ASCII 编码参数的解析,以便支持 Unicode 编码参数的解析。
当然,你也可以同时使用 percentEncoded
和 caseSensitive
配置,这 2 个配置会同时生效。

除此之外,你还可以指定 defaults
字段来代表配置中的默认行为

此变化将会在 MacOS Big Sur 和 iOS 14 中生效
替代变量的支持
在开始本节内容之前,我们先从一个现实生活的例子出发来引出我们要解决的问题:
我们在开发一个食品订购应用程序,它的链接表示如下
Session:https://developer.apple.com/videos/play/wwdc2020/10098/
引言
通过本文你将会了解到 Universal Links 基本概念,并且深入了解今年 Apple 对 Universal Links 的改进及优化
概述
Universal Links 是 HTTPS 或 HTTP URL,它们使用户可以在 App 中而不是在 Web 浏览器中打开你的内容,从而使你能够提供更丰富的体验。如果你的 App 没有安装,点击链接还是可以使用 Web 浏览器中打开你的内容。如果你还在使用自定义 URL Scheme,应尽快迁移到 Universal Links。
Universal Links 对自定义 URL Scheme URL 有哪些优势?
- 通用。 Universal Links 是标准的 URL 格式,而自定义 URL Scheme 则很特殊,并且只有你的 App 能解析和处理它。
- 安全。当用户安装你的应用时,iOS 会检查你已上传到网络服务器的文件配置,以确保你的网站允许您的应用代表其打开URL。
- 灵活。 即使未安装你的 App,Universal Links 也可以使用。 未安装你的应用程序时,按用户的期望,点击指向你网站的链接可在 Safari 中打开内容。
- 简单。 一个 URL 对你的网站和 App 均适用。
- 隐私。 其他应用可以与你的 App 通信,而无需知道你的 App 是否已安装。
Universal Links 是网站和 App 之间关联关系的重要纽带,接下去我们将会带你深度了解 Universal Links 今年的改进。
Tips:想了解更对关于 Universal Links 更多信息可以查看What's New in Universal Links
Watch OS 平台的支持
今年将会增加支持 Watch OS。Universal Links 在 Watch OS 上的工作方式与在我们其他平台上的工作方式相同。但是其中也有一些差异性,接下来我们一起了解下。
Associated Domains Entitlement 应用范围
Associated Domains Entitlement 是构成 Universal Links 重要配置部分,需要注意的是,如果你想在 Watch OS 中开启 Universal Links 的支持,你需要应用在 WatchKit Extension 中,而不是 WatchKit App 中。
处理机制的区别
在 iOS 和 MacOS 中我们处理和打开 Universal Links 方式如下

然而在 WatchOS 中,处理和打开的处理方式发生了变化

值得注意的是,handle
方法在 WatchOS 不会有处理成功失败的回调,所以在 Watch OS 中打开 Universal Links 失败的情况下会有个提示页面。

SwiftUI 的支持
在 SwiftUI 中,我们也增加了新的 API 支持处理和打开 Universal Links。

匹配模式的改进
在了解新的变化之前,我们先快速回顾一下现有的 Universal Links 都支持哪些匹配模式。

- 星号匹配 0 个或多个字符,并且贪婪地匹配。它将匹配尽可能多的字符。
- 问号匹配一个字符。
- 要匹配至少一个字符,请使用问号,后跟星号。
现在我们将会介绍新的匹配模式
支持大小写忽略的模式匹配
在不支持不区分大小写的匹配模式之前我们会遇到这样的一些问题:在我们的匹配路径中需要识别一个叫做 sourdough 的路径,在不支持不区分大小写之前我们需要这么去配置我们的 apple-app-site-association 文件

这太可怕了,你需要去处理所有的 case。
现在我们带来了新的忽略大小写的功能,针对上面的例子,我们只需要这么处理

嗯,看起来简洁多了,你只需要新增一个配置 caseSensitive
并且把它设置为 false 即可。
此变化将会在 iOS 13.5 和 MacOS 10.15.5 中生效
Unicode URL 支持
URL 通常都是 ASCII 编码,当你有一些非 ASCII 编码参数的时候如中文。你需要将非 ASCII 编码参数进行 URL Encode以满足 URL 编码格式,这显然对 URL 的阅读很不友好,举个例子

很明显,对 URL 所代表代码的参数信息难以去阅读和理解。
所以,我们带来了另外一项新特性:Unicode URL 支持
还是刚才那个例子。我们可以这么去表示:

你只需要增加一个新的配置 percentEncodeed
并且把它设置为 false,这将会禁用基于 ASCII 编码参数的解析,以便支持 Unicode 编码参数的解析。
当然,你也可以同时使用 percentEncoded
和 caseSensitive
配置,这 2 个配置会同时生效。

除此之外,你还可以指定 defaults
字段来代表配置中的默认行为

此变化将会在 MacOS Big Sur 和 iOS 14 中生效
替代变量的支持
在开始本节内容之前,我们先从一个现实生活的例子出发来引出我们要解决的问题:
我们在开发一个食品订购应用程序,它的链接表示如下
Session:https://developer.apple.com/videos/play/wwdc2020/10098/
引言
通过本文你将会了解到 Universal Links 基本概念,并且深入了解今年 Apple 对 Universal Links 的改进及优化
概述
Universal Links 是 HTTPS 或 HTTP URL,它们使用户可以在 App 中而不是在 Web 浏览器中打开你的内容,从而使你能够提供更丰富的体验。如果你的 App 没有安装,点击链接还是可以使用 Web 浏览器中打开你的内容。如果你还在使用自定义 URL Scheme,应尽快迁移到 Universal Links。
Universal Links 对自定义 URL Scheme URL 有哪些优势?
- 通用。 Universal Links 是标准的 URL 格式,而自定义 URL Scheme 则很特殊,并且只有你的 App 能解析和处理它。
- 安全。当用户安装你的应用时,iOS 会检查你已上传到网络服务器的文件配置,以确保你的网站允许您的应用代表其打开URL。
- 灵活。 即使未安装你的 App,Universal Links 也可以使用。 未安装你的应用程序时,按用户的期望,点击指向你网站的链接可在 Safari 中打开内容。
- 简单。 一个 URL 对你的网站和 App 均适用。
- 隐私。 其他应用可以与你的 App 通信,而无需知道你的 App 是否已安装。
Universal Links 是网站和 App 之间关联关系的重要纽带,接下去我们将会带你深度了解 Universal Links 今年的改进。
Tips:想了解更对关于 Universal Links 更多信息可以查看What's New in Universal Links
Watch OS 平台的支持
今年将会增加支持 Watch OS。Universal Links 在 Watch OS 上的工作方式与在我们其他平台上的工作方式相同。但是其中也有一些差异性,接下来我们一起了解下。
Associated Domains Entitlement 应用范围
Associated Domains Entitlement 是构成 Universal Links 重要配置部分,需要注意的是,如果你想在 Watch OS 中开启 Universal Links 的支持,你需要应用在 WatchKit Extension 中,而不是 WatchKit App 中。
处理机制的区别
在 iOS 和 MacOS 中我们处理和打开 Universal Links 方式如下

然而在 WatchOS 中,处理和打开的处理方式发生了变化

值得注意的是,handle
方法在 WatchOS 不会有处理成功失败的回调,所以在 Watch OS 中打开 Universal Links 失败的情况下会有个提示页面。

SwiftUI 的支持
在 SwiftUI 中,我们也增加了新的 API 支持处理和打开 Universal Links。

匹配模式的改进
在了解新的变化之前,我们先快速回顾一下现有的 Universal Links 都支持哪些匹配模式。

- 星号匹配 0 个或多个字符,并且贪婪地匹配。它将匹配尽可能多的字符。
- 问号匹配一个字符。
- 要匹配至少一个字符,请使用问号,后跟星号。
现在我们将会介绍新的匹配模式
支持大小写忽略的模式匹配
在不支持不区分大小写的匹配模式之前我们会遇到这样的一些问题:在我们的匹配路径中需要识别一个叫做 sourdough 的路径,在不支持不区分大小写之前我们需要这么去配置我们的 apple-app-site-association 文件

这太可怕了,你需要去处理所有的 case。
现在我们带来了新的忽略大小写的功能,针对上面的例子,我们只需要这么处理

嗯,看起来简洁多了,你只需要新增一个配置 caseSensitive
并且把它设置为 false 即可。
此变化将会在 iOS 13.5 和 MacOS 10.15.5 中生效
Unicode URL 支持
URL 通常都是 ASCII 编码,当你有一些非 ASCII 编码参数的时候如中文。你需要将非 ASCII 编码参数进行 URL Encode以满足 URL 编码格式,这显然对 URL 的阅读很不友好,举个例子

很明显,对 URL 所代表代码的参数信息难以去阅读和理解。
所以,我们带来了另外一项新特性:Unicode URL 支持
还是刚才那个例子。我们可以这么去表示:

你只需要增加一个新的配置 percentEncodeed
并且把它设置为 false,这将会禁用基于 ASCII 编码参数的解析,以便支持 Unicode 编码参数的解析。
当然,你也可以同时使用 percentEncoded
和 caseSensitive
配置,这 2 个配置会同时生效。

除此之外,你还可以指定 defaults
字段来代表配置中的默认行为

此变化将会在 MacOS Big Sur 和 iOS 14 中生效
替代变量的支持
在开始本节内容之前,我们先从一个现实生活的例子出发来引出我们要解决的问题:
我们在开发一个食品订购应用程序,它的链接表示如下