我现在正在 Android 上处理分支 io。 有点奇怪。如果我先关闭我的应用程序并单击该链接,该链接会将我带到我的应用程序并打开应该显示的页面。但是,如果我打开应用程序并单击主页按钮,然后单击链接,该链接会将我引导至 ap.. 但页面未显示。我只能看到主页,无需通过分支 io 进行路由。
这是我的代码。
@Override
protected void onStart() {
super.onStart();
branchIO();
}
private void branchIO() {
Branch branch= Branch.getInstance();
branch.initSession(new Branch.BranchReferralInitListener(){
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
if (error == null) {
try{
Log.d("log", referringParams.toString());
//...my routing logic...
}catch(Exception e){
Log.e("log", "branch io error",e);
}
} else {
Log.i("log", error.getMessage());
}
}
}, this.getIntent().getData(), this);
BranchIO.branchUniversalObject.generateShortUrl(this, BranchIO.linkProperties, new Branch.BranchLinkCreateListener() {
@Override
public void onLinkCreate(String url, BranchError error) {
if (error == null) {
}
}
});
}
如果我先关闭我的应用程序,日志是这样的
D/log: {"$og_title":"₩230000", "~creation_source":5, "$og_description":"blah blah", "+click_timestamp":1512100123,........"}
但是如果我先打开我的应用程序并将其放在后台,日志是这样的
D/log: {"+clicked_branch_link":false,"+is_first_session":false}
我阅读了很多 StackOverflow 和 GitHub 页面,但找不到解决方案。 感谢您的阅读!
编辑
我忘记在onNewIntent中使用this.setIntent(intent)。 所以添加这个之后,效果很好。
@Override
public void onNewIntent(Intent intent) {
this.setIntent(intent);
}
谢谢!
最佳答案
来自Branch.io的亚伦在这里。
您看到此错误的原因可能有多种。以下是一些:
您没有初始化 Branch 并在您的 主要/Splash Activity 。
您的主要/Splash Activity 没有 launchMode 设置为
singleTask
您没有重写
onNewIntent()
在您的主要/Splash Activity 中如果您使用的是 CustomApplicationClass,确保您正在初始化 Branch
Branch.getAutoInstance(this);
您可以找到一个示例 Main/Splash Activity here .
您还可以查看我们的测试床应用程序,它是 Branch Android SDK 的完整工作示例 here
关于Android 分支 IOreferingParams 为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586424/