0

当应用程序从自定义 URL 启动/安装时,我们使用 Branch 为我们的用户提供自定义体验。这种自定义体验必须可供新用户(下载应用程序并首次注册的用户)和已安装应用程序的登录用户使用。

这种定制体验对我们来说是强制性的。如果用户单击此 URL,则必须正确提示他。

我们有两个活动:

活动 A是启动器活动。它用作路由活动。这意味着如果用户登录或使用经典的登录和注册按钮提示他,它将在本地显示。

活动 B是家庭活动。它由 Activity A 在以下情况下启动: - 用户已经登录 - 用户登录 - 用户注册 这是“自定义”体验发生的地方(用户在单击 URL 后进入应用程序时会收到一个对话框提示) .

活动 A 中,我使用以下方法在 onStart() 中检索 Branch 提供的信息:

 branch.initSession(new Branch.BranchReferralInitListener()
        {
            @Override
            public void onInitFinished(JSONObject referringParams, BranchError error)
            {
                 // Searches through the JSONObject for key/value pairs...
            }
        };

同时,我启动了一个 Handler/Runnable 对,当回调需要很长时间才能触发时(即:当网络非常慢时),它作为超时。如果出现问题,这可以防止启动屏幕显示几分钟。

但是通过这样做,我不觉得我做事的方式很好。

假设我的闪屏超时设置为 10 秒,并且仅在 15 秒后调用回调。如果用户已经登录,那么只要Activity A的 10 秒结束,他就会被重定向到Activity B。因此,主屏幕上的对话框将永远不会提示他。

当路由取决于可以持续 n 秒的异步工作时,处理活动路由的正确方法是什么?

4

1 回答 1

0

如果会话失败(回调),Branch 应该在 5 秒后报告错误,在 onInit 中你可以检查BranchError error它是否为空,如果不是,则采取相应的行动。这将消除 10 秒后独立运行可触发的需要。

让我知道这是否有效。

于 2015-10-29T21:41:52.613 回答