在iOS上使用通用链接进行推送通知中的深度链接

3
我正在研究在iOS应用程序中使用Universal Links来进行深度链接的推送通知。这样我就可以为Web未来做好准备。 很多示例和教程假定用户将从网站选择通用链接以深入链接到应用程序。 我想使用推送通知中的Universal Links,而不是常规的URL模式方法。 我已经阅读了苹果文档 https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html 但是,目前我不清楚,如果我只是使用通用链接通过推送通知打开应用程序,是否仍需要设置所有配置,例如创建并上传apple-app-site-association文件到Web服务器的根目录。 在应用程序中使用Universal Links通过推送通知进行深度链接是否是一个推荐的方法,因为Apple似乎总体上都不鼓励使用URL模式,或者推送通知是特殊情况?

你从哪里得到了关于“苹果似乎在一般情况下不鼓励使用URL Schema”的信息?我从未听说过这个。 - kambala
Kambala - 自2015年起,苹果公司就开始采用通用链接技术,他们在2017年的WWDC大会上也有相关视频介绍。以下文章描述了他们的实现方法:https://blog.branch.io/uri-schemes-and-universal-links-for-ios/ - user1383060
谢谢,但这并不意味着旧式的URL方案被弃用:仍然可以完全正常地使用它们。 - kambala
从苹果文档中...通用链接为您提供了一些关键的好处,这些好处在使用自定义URL方案时无法获得。https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - user1383060
1个回答

15

推送通知和通用链接是两种不同的机制,虽然它们都能让用户进入应用程序。

使用通用链接时,在iOS设备上首先打开Safari,如果应用未安装,则打开该链接。如果应用已安装,则使用URL传递给AppDelegate方法application(_:continue:restorationHandler:),并直接从Safari跳转到应用中。在此处设置apple-app-site-association文件是必要的,以验证您拥有指定目标URL并可以将用户从网站重定向到应用中。通用链接对于用户启动交互(例如点击电子邮件中的链接)更为适合。

另一方面,推送通知通过TCP/IP直接与设备通信,将消息从APNs传递到iOS设备(有关详细信息,请参见APNs概述)。Safari不涉及此过程,而是用户在iOS设备上轻触通知,以打开并前往目标。与通用链接不同,您的目标不是通过URL传递的,而是在通知有效负载中使用额外的JSON数据在应用程序中处理(有关此结构,请参见创建JSON字典)。由于不涉及网站,因此推送通知没有apple-app-site-association。您直接从APNs通信到您的应用程序,并使用证书来确保只有您才能通过推送通知打开您的应用程序。远程推送通知非常适合开发者启动交互以吸引用户。

希望这可以澄清问题!


只回答了我问题的一半... 我知道Push和Universal Links之间的区别。Urban Airship使用深度链接,但在示例中,负载中有一个URL模式,格式为com.company.appname://section/asset。我想在负载中放置一个典型的Web风格链接,而不是www.companyname.com/sectiion/asset。原因是我将来可以在Web平台上重复使用此链接。我建议在Push通知负载中放置Web链接,而不是URL模式类型链接,这样当设备接收到Push时,它可以使用负载中的链接进行深度链接。 - user1383060
1
啊,现在你说的更有意义了。问题没有提到你正在使用Urban Airship。假设你谈论的是Deep Link [Message Action](https://docs.urbanairship.com/workflows/actions/)并在那里使用通用链接。我不熟悉UA的整个流程,但如果他们使用Safari来打开应用程序(典型的通用链接流程),则必须设置apple-app-site-association文件。无论如何,您都需要它来从Web、电子邮件等处获取普通通用链接。自定义URL类型仍然像@Kambala提到的那样完全受支持。 - Mark Thormann
1
是的,自定义URL类型仍然受支持,但正如我在对@Kambala的评论中提到的那样,苹果强调通用链接优于URL方案的好处。Urban Airship流程有两个选项,简单的PN将打开应用程序,如果您不使用他们的SDK并自己处理推送,则可以从PN负载中提取URL,并在应用程序中打开正确的视图。 UA中的富PN在应用程序中打开webView,当您点击此链接时,除非您已使用app-association文件实现了通用链接..理论上,否则您将被重定向到safari。 - user1383060
这个原因非常不同的是,通用链接被用于用户外部的应用场景,例如在Safari中深度链接到应用程序。在这种情况下,通用链接是从应用程序内的网页链接触发的,希望iOS足够聪明,能够意识到这一点。 - user1383060

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接