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)
这里有一个分支 -
当应用程序已位于前台并且用户尝试通过深层链接打开应用程序时,就会发生这种情况。
可以通过更新其 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 的未来开发情况随时更新这篇文章。
| 归档时间: |
|
| 查看次数: |
1800 次 |
| 最近记录: |