有没有办法识别该应用程序是通过 didFinishLaunchingWithOptions 中的 firebase dynamic link 安装的?
Is there a way to recognize, that the app was installed thru firebase dynamic link in didFinishLaunchingWithOptions?
我正在我的 iOS 应用程序中实现 firebase 动态 links,我已经可以解析 link,重定向到 AppStore 等。现在我想区分第一个 运行 的应用程序,当用户从动态安装它时 link - 我想跳过介绍并向他展示预期显示的内容。
是否有一些参数,我可以在 application(_:didFinishLaunchingWithOptions:)
中捕捉到,所以我可以说它是通过动态 link 启动的?
稍后调用方法application(_:continueUserActivity:userActivity:restorationHandler:)
,因此介绍已经启动。
这个案例很难测试,因为你必须在AppStore上发布你的应用程序。
嗯...据我所知,您在 application:(_:didFinishLaunchingWithOptions)
阶段实际上没有任何东西可以让您知道应用程序是由动态 link 打开的.如您所述,您将不得不等到 continueUserActivity
电话。
就是说,FIRDynamicLinks.dynamicLinks()?.handleUniversalLink
returns 几乎是即时的布尔值,因此您应该能够利用它来将您的动画短路,而不会造成糟糕的用户体验。回调 本身 可能要到几毫秒后才会发生,具体取决于它是缩短的动态 link(需要网络调用)还是扩展的动态(不需要) .
您实际上不需要在 App Store 中发布该应用程序即可运行 — 单击 link,关闭 App Store,然后通过 Xcode 安装应用程序版本(或任何其他测试版分发平台,如 TestFlight 或 Fabric)具有完全相同的效果。
根据Firebase docs,第一次安装调用的方法是openURL
(不,这对我来说也没有意义)。 continueUserActivity
方法适用于通用链接,仅当应用 已安装 打开 link 时才会使用。
我不知道有什么方法可以检测应用程序从 'deferred' link 安装后首次打开的时间,但您可以直接路由到共享内容(跳过介绍)只要存在深link。如果不存在深度 link,请显示常规介绍。
备选方案
您可以查看 Branch.io(全面披露:我在 Branch 团队)。除此之外,Branch 是 Firebase 动态链接的一个很好的免费替代品,具有大量附加功能。下面是所有参数的例子 Branch returns immediately in 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 上阅读有关这些参数的更多信息。
我正在我的 iOS 应用程序中实现 firebase 动态 links,我已经可以解析 link,重定向到 AppStore 等。现在我想区分第一个 运行 的应用程序,当用户从动态安装它时 link - 我想跳过介绍并向他展示预期显示的内容。
是否有一些参数,我可以在 application(_:didFinishLaunchingWithOptions:)
中捕捉到,所以我可以说它是通过动态 link 启动的?
稍后调用方法application(_:continueUserActivity:userActivity:restorationHandler:)
,因此介绍已经启动。
这个案例很难测试,因为你必须在AppStore上发布你的应用程序。
嗯...据我所知,您在 application:(_:didFinishLaunchingWithOptions)
阶段实际上没有任何东西可以让您知道应用程序是由动态 link 打开的.如您所述,您将不得不等到 continueUserActivity
电话。
就是说,FIRDynamicLinks.dynamicLinks()?.handleUniversalLink
returns 几乎是即时的布尔值,因此您应该能够利用它来将您的动画短路,而不会造成糟糕的用户体验。回调 本身 可能要到几毫秒后才会发生,具体取决于它是缩短的动态 link(需要网络调用)还是扩展的动态(不需要) .
您实际上不需要在 App Store 中发布该应用程序即可运行 — 单击 link,关闭 App Store,然后通过 Xcode 安装应用程序版本(或任何其他测试版分发平台,如 TestFlight 或 Fabric)具有完全相同的效果。
根据Firebase docs,第一次安装调用的方法是openURL
(不,这对我来说也没有意义)。 continueUserActivity
方法适用于通用链接,仅当应用 已安装 打开 link 时才会使用。
我不知道有什么方法可以检测应用程序从 'deferred' link 安装后首次打开的时间,但您可以直接路由到共享内容(跳过介绍)只要存在深link。如果不存在深度 link,请显示常规介绍。
备选方案
您可以查看 Branch.io(全面披露:我在 Branch 团队)。除此之外,Branch 是 Firebase 动态链接的一个很好的免费替代品,具有大量附加功能。下面是所有参数的例子 Branch returns immediately in 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 上阅读有关这些参数的更多信息。