【问题标题】:Is there a way to recognize, that the app was installed thru firebase dynamic link in didFinishLaunchingWithOptions?有没有办法识别该应用程序是通过didFinishLaunchingWithOptions中的firebase动态链接安装的?
【发布时间】:2017-03-05 22:58:21
【问题描述】:

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

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

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

这种情况很难测试,因为您必须在 AppStore 上发布您的应用。

【问题讨论】:

    标签: ios swift firebase firebase-dynamic-links


    【解决方案1】:

    实际上,您不需要在 App Store 中发布应用程序即可运行——单击链接,关闭 App Store,然后通过 Xcode(或任何其他 beta 分发平台,如 TestFlight 或Fabric)具有完全相同的效果。

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

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


    备选方案

    您可以查看Branch.io(完全披露:我在 Branch 团队)。除其他外,Branch 是 Firebase 动态链接的绝佳免费替代品,具有大量附加功能。下面是一个分支在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;
    }
    

    您可以在分支文档here 上阅读有关这些参数的更多信息。

    【讨论】:

    • 这正是我想要的。 firebase 文档说您可以在发布之前对其进行测试,但我不知道在单击 AppStore 链接然后从 Xcode 运行应用程序后会触发该过程。非常感谢!
    • 我❤️ Branch 并认为它是一款很棒的产品,但是为 Firebase 问题提供 Firebase + Branch 答案似乎有点错误。
    • 嘿@NSTJ,感谢您的反馈! OP 询问的是在 Firebase 中无法完成的事情。希望他们发现了解替代解决方案会有所帮助?
    【解决方案2】:

    嗯...据我所知,在application:(_:didFinishLaunchingWithOptions) 阶段您无法捕捉到任何东西,可以让您知道应用程序正在通过动态链接打开。正如您所提到的,您将不得不等到continueUserActivity 通话。

    也就是说,FIRDynamicLinks.dynamicLinks()?.handleUniversalLink 几乎立即返回一个布尔值,因此您应该能够利用它来缩短您的动画,而不会造成糟糕的用户体验。回调本身可能直到几毫秒后才会发生,这取决于它是缩短的动态链接(需要网络调用)还是扩展的动态链接(不需要)。

    【讨论】:

    • 这应该可以,但请注意,在初始安装时,即使是扩展链接,仍然需要网络调用。
    • 我还发现在启动屏幕消失之前调用了方法willContinueUserActivityWithType。所以这是放置“跳过介绍”逻辑的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多