我正在我的iOS应用程序中实现firebase动态链接,我已经可以解析链接,重定向到AppStore等。现在我想区分应用程序的第一次运行,当用户从动态链接安装它时 - 我想跳过介绍并向他展示预计会展示的内容。
是否有一些参数,我可以在application(_:didFinishLaunchingWithOptions:)
中捕获,所以我可以说它是通过动态链接启动的?
方法application(_:continueUserActivity:userActivity:restorationHandler:)
稍后调用,因此介绍已经启动。
这种情况很难测试,因为您必须在AppStore上发布您的应用程序。
实际上,您无需在App Store中发布应用程序即可实现此功能 - 单击链接,关闭App Store,然后通过Xcode(或任何其他Beta分发平台,如TestFlight或Fabric)安装应用程序构建完全相同的效果。
根据Firebase docs,第一次安装调用的方法是openURL
(不,这对我来说也没有意义)。 continueUserActivity
方法适用于Universal Links,仅在打开链接时已安装应用程序时使用。
我不知道有什么方法可以在安装“延迟”链接后第一次检测到应用程序何时打开,但只要存在深层链接,您就可以直接路由到共享内容(跳过介绍)。如果没有深层链接,请显示常规介绍。
你可以查看Branch.io(完全披露:我在分支团队)。除此之外,Branch还是Firebase动态链接的绝佳替代品,具有大量附加功能。以下是Branch在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;
}
您可以在Branch文档here上阅读有关这些参数的更多信息。
嗯......就我所知,在application:(_:didFinishLaunchingWithOptions)
阶段你没有任何东西可以让你知道应用程序是通过动态链接打开的。正如你所提到的,你将不得不等到continueUserActivity
跟注。
也就是说,FIRDynamicLinks.dynamicLinks()?.handleUniversalLink
几乎立即返回一个布尔值,所以你应该能够利用它来短路你的动画,而不是一个糟糕的用户体验。回调本身可能要到几毫秒之后才会发生,这取决于它是缩短的动态链接(需要网络调用)还是扩展的动态链接(不需要)。