是否可以通过电子邮件使用 Facebook App Links 并通过 App Store 安装?

Is it possible to use Facebook App Links with email and pass through App Store install?

我打算使用 FBSDK 的应用程序 link 通过电子邮件邀请使用我的 iOS 应用程序。

我知道我的 iOS 应用程序是否安装在设备上,当我 select link 并在 URL 中处理邀请令牌时,它会被打开。

但是,如果我的应用程序 未安装 怎么办?

用户从 App Store 安装后,我也可以处理邀请令牌吗?

希望曾经使用过这种情况的任何人都可以帮助我。

有很多原因导致您尝试做的事情不会按照您想要的方式出现。让我们深入探讨...

应用链接不再有效

Facebook 于 2014 年创建了 App Links 作为开放标准,以解决深度 links 的 URI 方案的局限性。应用链接有两个主要组成部分:

  1. 要添加到标准 http:// link 的网页目标的一组元标记。这些标签指定本机应用程序中相应内容的自定义 URI 方案位置,以及未安装应用程序时应发生的行为。
  2. 在支持打开 links 的应用程序中使用的路由引擎。此引擎在打开应用程序链接标签之前检查目标 URL,然后启动相应的应用程序或执行指定的回退行为。

App Links 应该是改变世界的开源标准,使应用程序之间的深度 linking 变得简单和通用。不幸的是,Facebook 已经决定他们实际上不想要那个世界(他们将用户留在 Facebook 应用程序中要好得多 - 如果你不相信我,请参阅 Instant Articles),这意味着 App Links 标准基本上已经死了。 iOS Facebook 应用不再支持它,Applinks.org 现在甚至不是一个单独的网站。

应用程序链接不适用于电子邮件(或基本上除 Facebook 之外的任何应用程序)

即使它仍然得到 Facebook 的支持,应用链接标准也有一个严重的缺陷:它需要源应用程序和目标应用程序共同工作。虽然元标记组件得到广泛采用,但路由引擎的唯一主要实现是在核心 Facebook 和 Messenger 应用程序中。

为了按照您的意愿运行,其中深度 linking 可以从电子邮件中的 links 发生,路由引擎组件需要在您的 link 可能会被点击。例如,对于 Apple 的默认 iOS 邮件应用程序或 Gmail 应用程序,永远不会 会发生这种情况。

App Links 对延迟深度 linking

没有有意义的支持

Deferred Deep LinkingDeep Linking指的是使用link直接打开您的应用程序到特定内容,Deferred 表示即使未首先安装该应用程序,它也能正常工作)需要远程服务器来关闭循环。你可以 build this yourself,但出于很多原因你真的不应该,其中最重要的是你有更重要的事情要做。您会注意到,这两个 App Links 组件都没有包含通过安装保留 link 数据的删除服务器,因此核心 App Links 标准从未正确支持延迟深度 linking。 Facebook 广告利用 FBSDK 提供的延迟深度 linking 与应用链接的部分支持,但这仅适用于在 Facebook 应用中单击 link/ad 并且接收应用具有FBSDK集成。

延迟深度 link无论如何都很难

从 App Links 继续,延迟深度 linking 仍然很复杂。 URL 方案不起作用,因为如果未安装该应用程序,它们 总是 失败并出现错误。 Apple 的更新 Universal Links in iOS 9+ get closer in that they at least don't trigger an error if the app isn't installed, but you'd still have to handle redirecting the user from your website to the App Store. You can't pass context through to the app after install with Universal Links, so you wouldn't be able to send the user to the correct item, and they actually aren't supported in a lot of places.

在 iOS 上深入 link 处理电子邮件非常困难

几乎所有电子邮件 link 都涉及某种点击跟踪,它始终作为 link 包装重定向实现。如果用户没有安装您的应用程序,这在技术上不是问题,但如果他们安装了,Universal Links don't work with wrapped links。如果您自己构建它,则需要完全禁用电子邮件中的点击跟踪,或者接受 deep links 在那里不起作用。

底线

App Links 从来都不是您需要的解决方案。像 Branch.io (full disclosure: they're so awesome I work with them) or Firebase Dynamic Links is what you need. Both services support deferred deep linking, out of Facebook or almost any email app. Branch is more powerful and offers far more features, and works with major email senders to offer a solution for deep linked email 这样的免费服务(目前市场上唯一的)。