初始化有问题 branch.io
Trouble with init branch.io
我使用 branch.io 来处理应用程序 link。 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 也有应用链接的 intent-filter:
<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 的启动模式是单任务。我在应用程序中初始化分支,在 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 打开我的应用程序时,referringParams 不为空。我可以获得所需的数据。
但是当应用程序打开并且我从其他应用程序单击 AppLink 时,referringParams 是空的。我认为问题出在 init Branch 上。我该如何解决?
解决方案 - 您需要将 AppLinkActivity class 设为主要。这个 activity 必须有一个意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
您需要确保覆盖 AppLinkActivity 中的 onNewIntent()
方法。这将确保返回相同的意图。
将以下代码片段添加到您的 AppLinkActivity:
@Override
protected void onNewIntent(Intent intent) {
this.setIntent(intent);
}
我使用 branch.io 来处理应用程序 link。 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 也有应用链接的 intent-filter:
<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 的启动模式是单任务。我在应用程序中初始化分支,在 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 打开我的应用程序时,referringParams 不为空。我可以获得所需的数据。 但是当应用程序打开并且我从其他应用程序单击 AppLink 时,referringParams 是空的。我认为问题出在 init Branch 上。我该如何解决?
解决方案 - 您需要将 AppLinkActivity class 设为主要。这个 activity 必须有一个意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
您需要确保覆盖 AppLinkActivity 中的 onNewIntent()
方法。这将确保返回相同的意图。
将以下代码片段添加到您的 AppLinkActivity:
@Override
protected void onNewIntent(Intent intent) {
this.setIntent(intent);
}