有没有办法认识到,该应用程序通过didFinishLaunchingWithOptions中的firebasedynamic链接安装?

我正在我的iOS应用程序中实现Firebasedynamic链接,我已经可以parsing链接,redirect到AppStore等。现在我想区分应用程序的第一次运行,当用户从dynamic链接安装它 – 我想跳过介绍并向他展示预期显示的内容。

是否有一些参数,我可以在application(_:didFinishLaunchingWithOptions:)捕获application(_:didFinishLaunchingWithOptions:)所以我可以说,它是通过dynamic链接启动?

方法application(_:continueUserActivity:userActivity:restorationHandler:)稍后调用,所以介绍已经启动。

这种情况很难testing,因为你必须在AppStore上发布你的应用程序。

实际上,您不需要在App Store中发布应用程序就可以工作 – 单击链接,closuresApp Store,然后通过Xcode(或任何其他Betatesting版平台,如TestFlight或Fabric)安装应用程序构build完全一样的效果。

根据Firebase文档 ,第一次安装的方法是openURL (不,这对我来说也是没有意义的)。 continueUserActivity方法用于通用链接,仅在打开链接时已安装应用程序的情况下使用。

我不知道有什么方法可以检测应用何时从“延迟”链接安装后第一次打开,但只要有深度链接,您就可以直接路由到共享内容(跳过介绍)。 如果深层链接不存在,请显示正常的介绍。


备选scheme

你可以查看Branch.io (完全披露:我在分支团队)。 除此之外,Branch是Firebasedynamic链接的一个很好的免费下载替代品,它具有许多其他function。 下面是一个分支在didFinishLaunchingWithOptions立即返回的所有参数的例子:

 { "branch_view_enabled" = 0; "browser_fingerprint_id" = "<null>"; data = "{ \"+is_first_session\":false, \"+clicked_branch_link\":true, \"+match_guaranteed\":true, \"$canonical_identifier\":\"room/OrangeOak\", \"$exp_date\":0, \"$identity_id\":\"308073965526600507\", \"$og_title\":\"Orange Oak\", \"$one_time_use\":false, \"$publicly_indexable\":1, \"room_name\":\"Orange Oak\", // this is a custom param, of which you may have an unlimited number \"~channel\":\"pasteboard\", \"~creation_source\":3, \"~feature\":\"sharing\", \"~id\":\"319180030632948530\", \"+click_timestamp\":1477336707, \"~referring_link\":\"https://branchmaps.app.link/qTLPNAJ0Jx\" }"; "device_fingerprint_id" = 308073965409112574; "identity_id" = 308073965526600507; link = "https://branchmaps.app.link/?%24identity_id=308073965526600507"; "session_id" = 319180164046538734; } 

您可以在这里的分支文档中阅读关于这些参数的更多信息。

嗯…就我所知,在application:(_:didFinishLaunchingWithOptions)没有什么可以捕获的application:(_:didFinishLaunchingWithOptions)阶段,它会让你知道应用程序正在被dynamic链接打开。 正如你所提到的,你将不得不等待continueUserActivity调用。

这就是说, FIRDynamicLinks.dynamicLinks()?.handleUniversalLink几乎立即返回一个布尔值,所以你应该能够利用它来短路你的animation而不FIRDynamicLinks.dynamicLinks()?.handleUniversalLink用户带来不好的体验。 callback本身可能要等到几毫秒后才能发生,这取决于它是一个缩短的dynamic链接(需要networking调用)还是扩展的(不)。