使用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了。
使用深层链接打开时,我应该使用哪一个来处理活动?
答案 0 :(得分:0)
onStart()
这会初始化您的分支会话,并在初始启动Activity
(as 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。检查一下,如果你还有问题请告诉我!