如果应用程序未安装在 iOS 设备上,则通用 link 无法运行

Universal link not working if app is not installed on an iOS Device

我已经在我的应用程序和服务器端实现了通用 links。安装应用程序后一切正常。如果该应用程序未安装在设备上,并且我从 say notes 或邮件中单击了通用 link,我将被重定向到可以下载该应用程序的应用程序商店。但是,在下载完成后,如果我在应用商店页面中单击 'OPEN',则不会调用下面的应用委托方法:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

因此,我无法执行某些操作来响应 userActivity.webpageURL 当应用程序 运行 或以前安装在设备上时我通常会收到的消息。这是正常行为吗?即,如果未安装该应用程序,Universal link 将仅用作从应用程序商店安装该应用程序的媒介?

这正是通用链接的工作原理。 如果用户没有您的应用程序,则下载是一个全新的会话,而不是一个持续的用户 activity。

我相信 branch.io 提供了一个允许新安装连续性的 SDK。

编辑:

好的,我做了一些挖掘,这称为延迟深度链接。 它不受 Apple 通用链接的正式支持。

但基本上分支是这样做的:

  • 当新用户访问您的网站时,您会在 您网站的 cookie。
  • 然后当第一次打开应用程序时,你检查一下 使用 SafariServices 的令牌
  • 如果存在令牌,运行 您的连续性代码。

这里有关于 iOS 中所有链接类型的更详细的 article

实现此目的的唯一方法是通过设备指纹识别机制。这就是 Branch、Adjust、GetSocial、Appsflyer、Tune、Kochava 等提供商如何执行上下文深度链接、延迟深度链接、归因和跟踪。

如果您不想使用上述任何提供程序,并且只需要一个非常基本的设备指纹识别机制,那么您可以仅使用 IP 地址来实现。 This 是一篇来自 Tune 的关于用于归因的不同方法的非常好的文章。

(免责声明:我是 GetSocial 的创始人)