使用init branch.io时出现问题

时间:2017-11-07 07:23:40

标签: java android branch.io

我使用branch.io来处理app链接。 AndroidManifest具有针对分支URI方案的意图过滤:

<intent-filter>
    <data android:scheme="***" android:host="open" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

AndroidManifest也有针对App Links的意图过滤:

<intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" android:host="***.app.link" />
            <data
                android:host="***-alternate.app.link"
                android:scheme="https"/>
            <data
                android:host="***.test-app.link"
                android:scheme="https"/>
            <data
                android:host="***-alternate.test-app.link"
                android:scheme="https"/>

AppLinkActivity的LaunchMode是singleTask。我在应用程序中初始化分支,在onCreate:

Branch.getAutoInstance(this);

打开AppLinkActivity后,我得到了实例和我初始化会话:

Branch branch = Branch.getInstance(getApplicationContext());
   branch.initSession((referringParams, error) -> {
        LogFileUtil.writeLog("Finish init session");
        if (error == null) {
            //Кое что делаю
        } else {
           //Кое что делаю
        }
    }, this.getIntent().getData(), this);

当我通过AppLink打开我的应用程序时,推荐不是空的。我可以获得所需的数据。 但是当应用程序打开并且我从其他应用程序单击AppLink时,该referParams为空。我认为问题是init Branch。我怎么解决它?

2 个答案:

答案 0 :(得分:0)

解决方案 - 您需要将AppLinkActivity类设为main。此活动必须还有一个意图过滤器:

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

答案 1 :(得分:0)

您需要确保覆盖AppLinkActivity中的onNewIntent()方法。这将确保返回相同的意图。

将以下代码段添加到AppLinkActivity:

@Override
protected void onNewIntent(Intent intent) {
    this.setIntent(intent);
}