我使用branch.io来处理应用链接。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 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打开我的应用程序时,referringParams不为空。我可以获取所需的数据。但当应用程序打开时,我从其他应用程序单击AppLink,referringParams为空。我认为问题出在init分支。如何修复?
2条答案
按热度按时间dzjeubhm1#
您需要确保重写AppLinkActivity中的
onNewIntent()
方法。这将确保返回相同的Intent。将以下代码段添加到AppLinkActivity:
lrpiutwd2#
解决方案-您需要将AppLinkActivity类设为main。此Activity必须多一个intent过滤器: