【发布时间】:2020-09-02 06:55:43
【问题描述】:
我有一个启动器 Activity,它被设置为接收深层分支意图。
当后栈中没有Activity时,onInitFinished(JSONObject, BranchError)给出这个BranchError,jSONProject为null:
警告。会话初始化已经发生。要强制进行新会话,请将 Intent extra “branch_force_new_session”设置为 true。
AndroidManifest.xml:
<activity
android:name="LauncherActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="myscheme" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="my.domain.com"
android:scheme="https" />
</intent-filter>
</activity>
活动:
class LauncherActivity : Branch.BranchReferralInitListener {
override fun onStart() {
super.onStart()
Branch.sessionBuilder(this).withCallback(this).withData(parseIntent().data).init()
if (BuildConfig.DEBUG) {
IntegrationValidator.validate(this)
}
}
private fun parseIntent(): Intent {
var newIntent = Intent()
newIntent = newIntent.putExtra("branch_force_new_session", true)
newIntent = newIntent.putExtra("branch", intent.dataString)
return newIntent
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
this.intent = intent
Branch.sessionBuilder(this).withCallback(this).withData(parseIntent().data).reInit()
}
override fun onInitFinished(referringParams: JSONObject?, error: BranchError?) {
if (error != null) {
// Getting error only when app is not backgrounded
} else if (referringParams != null) {
// When app is backgrounded, it works
}
}
}
当收到一个意图并且应用程序在后台运行时,一切正常。当应用程序由于分支意图而启动时,我收到一个错误,并且引用参数为空。我也尝试过延迟初始化。
有什么想法吗?
【问题讨论】:
-
我可以看到您正在DeepLinkActivity 中初始化SDK。虽然在清单中你有 LauncherActivity。您能否通过深层链接确认启动了哪个 Activity,然后在该 Activity 中初始化 SDK?
-
感谢您指出,我在发帖时更改了活动名称,但没有更新活动类。初始化肯定是在 Launcher 活动中完成的
标签: android branch.io android-deep-link