【发布时间】:2023-03-19 05:42:02
【问题描述】:
我计划使用来自FBSDK 的应用链接通过电子邮件邀请使用我的 iOS 应用。
我知道我的 iOS 应用程序是否安装在设备上,当我选择链接并处理 URL 中的邀请令牌时,它将打开。
但是如果我的应用没有安装呢?
用户从 App Store 安装后,我还可以处理邀请令牌吗?
希望曾经使用此场景的任何人都可以帮助我。
【问题讨论】:
标签: ios facebook deep-linking applinks
我计划使用来自FBSDK 的应用链接通过电子邮件邀请使用我的 iOS 应用。
我知道我的 iOS 应用程序是否安装在设备上,当我选择链接并处理 URL 中的邀请令牌时,它将打开。
但是如果我的应用没有安装呢?
用户从 App Store 安装后,我还可以处理邀请令牌吗?
希望曾经使用此场景的任何人都可以帮助我。
【问题讨论】:
标签: ios facebook deep-linking applinks
有很多原因导致您尝试做的事情不会如您所愿。让我们潜入...
Facebook 在 2014 年创建了 App Links 作为开放标准,以解决 URI 方案深度链接的限制。应用链接有两个主要组成部分:
http:// 链接的网页目标的一组元标记。这些标签指定原生应用内相应内容的自定义 URI 方案位置,以及在未安装应用时应发生的行为。App Links 应该是一个改变世界的开源标准,使应用到应用的深度链接变得简单而通用。不幸的是,Facebook 已经决定他们实际上并不想要那个世界(将用户留在 Facebook 应用程序中对他们来说要好得多——如果你不相信我,请参阅 Instant Articles),这意味着应用程序链接标准基本上已经死了。 iOS Facebook 应用不再支持它,Applinks.org 现在甚至不是一个单独的网站。
即使 Facebook 仍然支持它,App Links 标准也有一个严重的缺陷:它需要源应用程序和目标应用程序的工作。虽然元标签组件得到广泛采用,但路由引擎的唯一主要实现是在核心 Facebook 和 Messenger 应用程序中。
要按照您的意愿运行,可以从电子邮件中的链接发生深度链接,路由引擎组件需要在任何可能点击您的链接的电子邮件应用程序中实现。对于 Apple 的默认 iOS Mail 应用或 Gmail 应用等应用来说,永远不会发生这种情况。
Deferred Deep Linking(Deep Linking 是指使用链接将您的应用程序直接打开到特定内容,Deferred 表示即使未安装该应用程序也可以使用首先)需要一个远程服务器来关闭循环。你可以build this yourself,但你真的不应该有很多原因,尤其是你有更重要的事情要做。您会注意到,两个 App Links 组件都没有包含删除服务器来通过安装保留链接数据,因此核心 App Links 标准从未正确支持延迟深度链接。 Facebook 广告利用 FBSDK 与应用链接一起提供的对延迟深度链接的部分支持,但这仅在 Facebook 应用中点击链接/广告且接收应用集成了 FBSDK 时才有效。
从 App Links 开始,延迟的深度链接仍然很复杂。 URL 方案不起作用,因为如果未安装应用程序,它们总是会失败并出现错误。 Apple 在 iOS 9+ 中较新的 Universal Links 更接近,因为如果未安装应用程序,它们至少不会触发 错误,但您仍然必须处理从您的网站到 App Store。使用 Universal Links 安装后,您无法将上下文传递给应用程序,因此您无法将用户发送到正确的项目,而且它们实际上不受支持 in a lot of places。
几乎所有电子邮件链接都涉及某种点击跟踪,它总是作为链接包装重定向实现。如果用户没有安装您的应用程序,这在技术上不是问题,但如果他们安装了,Universal Links don't work with wrapped links。如果您自己构建它,您要么需要在电子邮件中完全禁用点击跟踪,要么接受深层链接在那里不起作用。
应用链接从来都不是您需要的解决方案。像Branch.io 这样的免费服务(完全披露:我和他们一起工作太棒了)或 Firebase 动态链接是您所需要的。这两种服务都支持延迟深度链接,来自 Facebook 或几乎任何电子邮件应用程序。 Branch 是more powerful and offers far more features,与主要的电子邮件发件人合作,为deep linked email(目前市场上唯一的一个)提供解决方案。
【讨论】: