Branch.io 返回“会话初始化已经发生”错误消息

dev*_*v90 6 android android-layout branch.io

我检查了 git 上报告的这个问题,很多人报告了它,但是那里没有合适的解决方案。

如果我的应用程序被杀死并且内存中不存在应用程序进程,则一切正常。

但我的用例是从推送通知获取分支链接。

我也将 splashActivity 设置为 SingleTask

android:launchMode="singleTask"

我收到以下错误消息。

BRANCH_SDK:警告。会话初始化已经发生。要强制进行新会话,请将 Intent extra,“branch_force_new_session”设置为 true。

以下是我的代码,它检查是否有来自分支的任何数据,并将详细信息传递给 HomeActivity,HomeActivity 然后根据 id 加载特定的新闻项目。

我不知道从哪里传递branch_force_new_session这些信息。如果我从 Splash Intent 传递它,它就不起作用。

我在用 branchSDK 5.0.1

class SplashActivity : AppCompatActivity(), , Branch.BranchReferralInitListener{


    override fun onStart() {
        super.onStart()
        Branch.sessionBuilder(this).withCallback(this).withData(if (intent != null) intent.data else null).init()

        Log.d("BRANCH_SDK_00_", "onStart")
    }


 override fun onInitFinished(referringParams: JSONObject?, error: BranchError?) {

        if (error == null) {

            if(referringParams?.has("news") ==true){
                isNewsItemReceivedFromBranch = true
                branchAggregatedFeedItemId = referringParams.getInt("news")


                //StartHomeActivity()
            }

            initAppStartupProcesses()

        } else {
            Log.e("BRANCH_SDK", error.message)
            initAppStartupProcesses()
        }

    }


}
Run Code Online (Sandbox Code Playgroud)

显现

<activity
            android:name=".activities.SplashActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>



            <!-- Branch URI Scheme -->
            <intent-filter>
                <data android:scheme="aaa" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
            <!-- Branch URI Scheme -->

            <!-- Branch App Links (optional) -->
            <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="aaa.aa.aa" />
                <data android:scheme="https" android:host="aaa.aaaa" />
            </intent-filter>

</activity>
Run Code Online (Sandbox Code Playgroud)

Nov*_*cas 5

这里有一个分支 -

当应用程序已位于前台并且用户尝试通过深层链接打开应用程序时,就会发生这种情况。

可以通过更新其 oNewIntent 重写方法来避免这种情况,如下所示 -

  @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    // if activity is in foreground (or in backstack but partially visible) launching the same
    // activity will skip onStart, handle this case with reInitSession
    private Branch.BranchUniversalReferralInitListener branchReferralInitListener = new Branch.BranchUniversalReferralInitListener() {
    @Override public void onInitFinished(@Nullable BranchUniversalObject branchUniversalObject, @Nullable LinkProperties linkProperties, @Nullable BranchError error) {
        // do something with branchUniversalObject/linkProperties..
    }
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您也可以尝试使用最新版本的 SDK 中Branch.getInstance().getLatestReferringParams()收到的参数,而不是读取该参数。Branch.init

我将根据 SDK 的未来开发情况随时更新这篇文章。

  • 您可以更新分支 5.0 的答案吗? (5认同)