【问题标题】:Branch error Warning. Session initialization already happened. (-118)分支错误警告。会话初始化已经发生。 (-118)
【发布时间】: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


【解决方案1】:

Branch 团队似乎已经解决了这个问题。 目前还没有修复,但您可以尝试他们推荐的解决方法here

if else (error.getErrorCode() === BranchError.ERR_BRANCH_ALREADY_INITIALIZED) {
  
branchReferringPramas_ = Branch.getLatestReferringParams();

}

【讨论】:

  • 应该是 branchReferringPramas_ = Branch.getInstance().getLatestReferringParams()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 2011-08-29
  • 2011-11-29
  • 2014-06-17
  • 1970-01-01
相关资源
最近更新 更多