如何知道应用程序是通过 didFinishLaunchingWithOptions 中的 firebase 动态链接安装的?

Posted

技术标签:

【中文标题】如何知道应用程序是通过 didFinishLaunchingWithOptions 中的 firebase 动态链接安装的?【英文标题】:How to know app was installed through firebase dynamic link in didFinishLaunchingWithOptions? 【发布时间】:2017-11-23 08:47:10 【问题描述】:

我正在我的 ios 应用程序中实现 firebase 动态链接,我已经可以解析链接,重定向到 AppStore 等。现在我想区分应用程序的第一次运行,当用户从动态链接安装它时 - 我想跳过介绍,向他展示预计要展示的内容。

有没有办法在进入 didFinishLaunchingWithOptions 之前知道应用是如何打开的?

【问题讨论】:

【参考方案1】:

当 Firebase 动态链接 iOS SDK 完成检索待处理(延迟)动态链接时,将调用方法 application:openURL:options:。 如果找到挂起的动态链接,对象[[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url] 将具有非零属性urlurl 将等于您的深层链接,该用户在未安装您的应用程序时点击了该链接。如果未找到链接,则此属性将为 nil。

我建议您在didFinishLaunchingWithOptions 中显示“加载屏幕”。当 Firebase 动态链接 SDK 将结果传递给您时,如果找到待处理的动态链接,您可以继续自定义载入。如果未找到待处理的动态链接,则默认加入。请记住,如果网络速度很慢,这可能需要一些时间。您可能希望将超时设置为 X 秒,以免用户在“加载屏幕”时停留太久。

关于在 iOS 上接收 Firebase 动态链接的文档https://firebase.google.com/docs/dynamic-links/ios/receive

【讨论】:

Ivanow "当 Firebase 动态链接 SDK 将结果传递给您时,如果找到待处理的动态链接,您可以继续自定义载入。如果未找到待处理的动态链接,则可以使用默认载入。"但是,如果永远不会调用 openURL,我怎么知道是否找到了挂起的动态链接?因为并非总是使用动态链接打开/下载应用程序。我真的希望你能帮我解决这个问题,谢谢。 @muyat openURL 即使没有找到挂起的链接也会被调用。您将收到类似于“://google/link/?dismiss=1&is_weak_match=1”的链接。请参阅此评论 github.com/firebase/firebase-ios-sdk/issues/… 我正在努力改进文档以明确这一点。如果您没有看到 openURL: 请发表评论,如本答案所述。 @Ivanow 感谢您的回复。我将尝试实现这一点,并让您知道一切是否对我有用!再次感谢。 @Ivanow 加载屏幕完成后,我需要知道应用程序是否使用动态链接打开。延迟启动屏幕是可能的,但要延迟多长时间? 2、3 或 5 秒?希望收到您的来信! “加载屏幕”是指您自己的 UIViewController 子类,它将显示您的应用程序徽标和 UIActivityIndi​​cator 等信息。您可以随时将此视图控制器保持在屏幕上,并且您的应用不会被杀死。

以上是关于如何知道应用程序是通过 didFinishLaunchingWithOptions 中的 firebase 动态链接安装的?的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 不推送视图控制器

iOs 中的推送通知和应用程序图标被单击

我们如何让应用用户知道连接是通过 SSL 建立的?

如何知道应用程序是通过 didFinishLaunchingWithOptions 中的 firebase 动态链接安装的?

如何通过Java程序知道平台[重复]

如何知道 iOS 设备是通过 USB 还是 Wall Port Charger 连接的?