阅读中得知,iOS 9 推出了通用链接(Universal Links)。在苹果公司的App Search Programming Guide 的“支持通用链接”部分中,它说这与 URL 方案深度链接并不完全相同,但我对这个话题还不是很清楚:
- 通用链接和 URL 方案之间的区别是什么?是通用链接仅适用于网站中的超链接以及邮件或消息应用吗?
- 通用链接取代了 URL 方案吗?
- 通用链接是什么类型的深度链接?
阅读中得知,iOS 9 推出了通用链接(Universal Links)。在苹果公司的App Search Programming Guide 的“支持通用链接”部分中,它说这与 URL 方案深度链接并不完全相同,但我对这个话题还不是很清楚:
通用链接和URL Scheme之间的区别是什么?通用链接只适用于网站上的超链接、邮件或信息应用吗?
通用链接是苹果特定的基于操作系统的URL,将网站URL与应用程序特定的URI Scheme和路由绑定在一起。它并不适用于所有应用程序 - 因为应用程序必须支持此行为。有一个很好的列表可以查看目前ULs的工作方式(这里)。
通用链接也存在许多问题,在文章结尾我会进行概述。请参阅下面的长篇阅读。
通用链接是否取代了URL Scheme?
不是。它们是iOS Safari上强制替换URI Scheme和路由的技术。您必须并且应该仍然支持您的应用程序的URI Scheme和路由,因为Android和iOS Chrome仍然使用此技术,每个主要的链接供应商从归因到电子邮件都使用此技术。
通用链接是否是深层链接的一种?
是和否。通用链接本身不是通用深层链接 - 例如,它们无法通过安装过程进行路由。但当用户拥有应用程序时,他们可以进行深度链接。最好根据链接的功能来考虑所有链接,而不是将URL分类为“深层链接”和“非深层链接”。
许多链接根据用户是否拥有应用程序以及上下文(浏览器、应用程序、操作系统、操作系统版本等)展现出深度链接的行为。改变思考方式。
跟踪通用链接
在以下文档中,我概述了通用链接的各个方面。需要指出的是,continueUserActivity
将报告来自通用链接的引荐URL,因此您可以使用它来归因打开。
由于UL不是普通链接,如果您有重定向,那么它将被破坏。同样,如果您关闭重定向,则您拥有的任何网站点击服务器都将无法访问。这是另一个讨论的问题,但需要注意。
下面是有关通用链接的许多有用信息。
大多数人都熟悉URI方案。 URI是通用资源标识符(link)。可以将URI分配给移动应用程序。输入URI,例如airbnb://,将尝试在设备上定位应用程序资源Airbnb。
在通用链接或应用程序链接存在之前(即iOS 9.3 / Android 6.0之前),人们需要使用“自定义URI方案”和形式为airbnb:// d / listing / 530250
的路由来深入链接用户到移动应用程序中的特定内容(在这种情况下是列表)。但是,这既不安全,也不能处理用户未安装应用程序的情况(没有备用方案)。大多数归因合作伙伴(Appsflyer,Kochava,Button,Yozio,Branch等)的工作方式是提供处理此问题的链接。
window.location.href(...)
苹果通用链接和安卓应用链接本质上是网页URL(例如:https://www.airbnb.com/rooms/530250
),旨在将用户引导至最佳的网页或应用位置。如果用户没有安装应用,它们旨在将用户带到移动网页,但如果用户已经安装了应用,则将用户带到应用中的确切内容。在移动设备上,如果用户跟随通用链接并安装了我们的应用,则可能会被引导到应用程序,否则系统将退回并将访问者放在我们的移动网站上(有一些例外情况--请参见下文)。
要使链接真正通用,需要在Web、iOS和Android上启用链接功能,并且所有应用程序共享相同的资源路径。
苹果通用链接(iOS)和安卓应用链接(Android)本质上是相同的概念,但常常混淆或与其他路由机制混淆。谈论这些概念时要明确,否则您会冒着混淆不同工作方式的技术的风险。
具体而言,苹果通用链接是苹果公司部署在iPhone操作系统(OS)上的标准,允许用户点击链接并立即传送到应用程序(如果他们已经安装了)。苹果通用链接没有重定向。它是一种具有一定技术复杂性的特殊系统设置。当用户点击链接时,会向苹果发出往返服务器调用,并且操作系统会立即打开应用程序,而不会打开浏览器或加载URL。更多关于如何工作的内容,请参见下文。
安卓应用链接是在Android上设置的等效链接系统。
通用链接从为每个域名托管“苹果应用程序网站关联文件”(AASA)开始。
需要注意的是,几乎每家公司的AASA都托管在其主域名后面加上“/apple-app-site-association”。
以下是一些示例:
https://www.jet.com/apple-app-site-association https://www.pinterest.com/apple-app-site-association
如果您点击这些URL,它将下载公司的AASA。右侧是AASA示例。一些值得注意的东西包括: 适用于可以应用通用链接的所有应用程序的AppID。在我们和许多其他AASA中,您将看到设置生产和测试版本的应用程序,以便在测试期间链接将跨所有版本工作。 AppID结构化为应用程序前缀,后跟Bundle ID。通常,每个应用程序的测试版本都有不同的前缀,但Bundle ID保持一致。5LL7P8E8RA.com.airbnb.app
"/rooms/*"
"/wishlists/*"
"/invite"
"NOT /rooms/*/building-rules"
通用链接是iOS的功能,可以将网页URL请求发送给指定的应用程序,而不是在浏览器中打开它们。
URL方案是应用程序根据URL描述打开特定状态的能力,并由开发人员在代码中处理。
假设您有一个名为“酷应用”的应用程序,并注册了URL方案“coolapp”。 您的应用程序有“好玩小工具”和“好玩东西”等不同区域。 现在,您可以使用此链接打开您的应用程序:coolapp://nice-gadgets
。 要使应用程序显示在“好玩小工具”部分中,您必须实现application(_:openURL:options:)
方法,在其中找到所请求的URL,并使应用程序打开所请求的视图控制器。
同时,您拥有一个名为www.coolapp.com
的网站。 当在iOS设备上浏览时,如果遇到指向您的网站的链接,例如www.coolapp.com/nice-gadgets
,并且打开该链接,则它将在浏览器中打开。通过启用通用链接,它会通过调用带有URL参数的application(_:continueUserActivity:restorationHandler:)
方法打开应用程序。从这里,您可以使用与URL方案处理相同的逻辑,以在所请求的状态下打开应用程序。
那么通用链接会取代URL方案吗?我不这么认为,但它们将以一种不错的方式互为补充。
通用链接是深层链接吗?并非如此,但它们可以启动在应用程序中使用深层链接的过程。
在苹果公司的理想世界中,是的!
因为苹果强制开发者使用万能链接实现深度链接,所以万能链接是苹果的一种深度链接类型。但如果你看到Facebook最新的SDK,他们实现了自己的WebView来支持iOS 9.0+的深度链接。所以对于苹果来说,万能链接比深度链接更好。