Branch.io会话与深层链接路由

时间:2016-09-16 07:50:52

标签: android branch.io

使用Branch.io,他们的文档说你应该在onStart中启动会话,如此

Branch branch = Branch.getInstance();

branch.initSession(new Branch.BranchReferralInitListener(){
    @Override
    public void onInitFinished(JSONObject referringParams, BranchError error) {
        if (error == null) {
            // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
            // params will be empty if no data found
            // ... insert custom logic here ... // <--- NOTE THIS PLEASE
        } else {
            Log.i("MyApp", error.getMessage());
        }
    }
}, this.getIntent().getData(), this);

虽然我的应用程序总是使用分支链接打开,但永远不会调用inInitFinished方法。

所以我在文档中进一步挖掘并发现了深层链接路由,它表示要处理onResume中的所有内容,如下所示:

super.onResume();
if (Branch.isAutoDeepLinkLaunch(this)) {
    try {
        String autoDeeplinkedValue = Branch.getInstance().getLatestReferringParams().getString("product_picture");
        launch_mode_txt.setText("Launched by Branch on auto deep linking!"
                + "\n\n" + autoDeeplinkedValue);
    } catch (JSONException e) {
        e.printStackTrace();
    }
} else {
    launch_mode_txt.setText("Launched by normal application flow");
}

虽然我的应用程序是通过链接打开的,但是再也找不到try / catch了。

使用深层链接打开时,我应该使用哪一个来处理活动?

1 个答案:

答案 0 :(得分:0)

分众来自Branch.io的Alex:这两种方法实际上是一起工作的,并且有不同的用途。

onStart()

这会初始化您的分支会话,并在初始启动Activityas defined by the intent filter in your Manifest file)加载时执行。你可以在这里完成与路由相关的所有事情,如果你想要一些先进的东西,这也是你开始构建custom link routing method的地方。

onResume()

您所指的代码段来自我们的automatic deep link routing method。这是分开的原因是因为您实际上是在不同的 Activity中进行onStart()调用。流程是您的应用首先通过Activity来电通过onStart(),然后通过Activity调用路由到onResume(),以显示深层链接内容。

仅当您使用自动深层链接路由方法(在清单文件中启用)时,才需要该代码段中的isAutoDeepLinkLaunch()调用。您可以使用此方法确定活动是否由AutoDeeplinking功能启动。请注意,自动深层链接与在链接点击时打开您的应用程序不同,如果您不打算构建自己的更复杂的深层链接路由方法,则用于在打开链接后自动导航到特定活动。 / p>

我为你未完成onInitFinished()而预感的原因是你可能仍然需要enable auto session management。检查一下,如果你还有问题请告诉我!

相关问题