我们的 Android 应用程序是一款聊天应用程序。用户可以将分支链接粘贴到聊天消息中。当另一个用户点击它时,我们希望检索链接参数以将用户带到另一个屏幕。
不幸的是,当我们点击应用程序内的此类链接时,我们无法检索链接参数(请注意,我们没有使用 WebView ),我们收到错误“警告。 session 初始化已发生。
要强制启动新 session ,请额外设置 Intent ,branch_force_new_session
, 至true
在 onInitFinished(@Nullable JSONObject referringParams, @Nullable BranchError error)
方法。
我们该如何解决这个问题?对我来说,如何在该用例中传递新的 Intent 参数并不明显。
注释:
我们的启动器 Activity 是 singleTask
我们在branch.io sdk 4.3.2
onNewIntent()
似乎没有被调用(在下面的代码中),也许这就是我们问题的根本原因。
示例代码:
private Branch.BranchReferralInitListener branchReferralInitListener =
new Branch.BranchReferralInitListener() {
@Override
public void onInitFinished(@Nullable JSONObject referringParams, @Nullable BranchError error) {
...
}
@Override
protected void onStart() {
super.onStart();
Branch.getInstance().initSession(branchReferralInitListener, getIntent() != null ?
getIntent().getData() : null, this);
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
this.setIntent(intent);
// activity will skip onStart, handle this case with reInitSession
Branch.getInstance().reInitSession(this, branchReferralInitListener);
}
最佳答案
这是 Android SDK v4.3.2 的一个已知问题,我们正在努力解决。 建议您同时尝试以下操作: 当用户尝试打开在后台运行的应用程序时,我们会收到将branch_force_new_session 设置为 true 的错误。 Branch SDK 在启动器 Activity 的 onStart 上初始化,当应用程序从后台进入前台时,它会在 onResume 上初始化。 在这种情况下,我们可能需要在这里重新初始化 SDK。 会要求您按照 Branch 文档 ( https://docs.branch.io/apps/android/#initialize-branch ) 实现以下代码 fragment //Activity 将跳过 onStart,用 reInitSession 处理这种情况 Branch.getInstance().reInitSession(this,branchReferralInitListener);
或者,建议您安装 Branch SDK v4.3.1。
关于android - 在应用程序内打开分支链接时无法检索链接参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60293620/