前提条件1.应用程序以LinkActivity开头,此时我们没有深层链接意图,没关系.
只有当我们暂停应用程序(例如切换到最近的应用程序菜单)然后返回到应用程序时 - 深层链接才能按预期工作,但只有在第一次尝试时才有效.可能是会话关闭的一些问题(但在当前版本的sdk中它自我控制会话关闭)
public class LinkActivity extends AppCompatActivity {
private static final String TAG = LinkActivity.class.getSimpleName();
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
}
@Override
protected void onStart() {
super.onStart();
Uri uri = getIntent().getData();
Log.w(TAG, "uri: " + uri);
Branch.getInstance().initSession(new Branch.BranchReferralInitListener() {
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
Log.w(TAG, "json: " + referringParams);
startActivity(new Intent(LinkActivity.this, MainActivity.class));
}
}, uri, this);
}
}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
public class BranchApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Branch.enableLogging();
Branch.getAutoInstance(this);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.myapp">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name=".BranchApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".LinkActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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:host="myapp.link"
android:scheme="https" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"/>
<meta-data
android:name="io.branch.sdk.BranchKey"
android:value="@string/branch_io_live_key" />
<meta-data
android:name="io.branch.sdk.BranchKey.test"
android:value="@string/branch_io_test_key" />
<meta-data
android:name="io.branch.sdk.TestMode"
android:value="false" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
实施"io.branch.sdk.android:library:2.14.3"
更新: 即使使用android:launchMode ="singleInstance",LinkActivity钢也会重现(我不认为是这种情况).
Udpate2: Bhardwaj提到在我们通过getAutoInstance启动Branch时不需要调用initSession.但是在这种情况下如何从uri那里得到反击法呢?
Update3: 来自Branch.checkIntentForSessionRestart doc:
检查强制会话重启.如果传入的intent将branch_force_new_session设置为true,则重新启动Branch会话.这是为了支持在app已经在前台运行时打开深层链接路径.例如在前台app时单击推送通知.
所以,我希望的行为与此描述相符.但是如何强制会话重启?
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |