我的APP正在使用由Facebook SDK提供支持的LoginActivity。
一切正常,除非我想进行深层链接,因为如果我直接将用户发送到我的应用程序的一部分,那么用户会绕过所谓的强制登录
所以我做的是以下内容:
<activity
android:name=".LoginActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="myapp.com"
android:pathPrefix="/invitations"
android:scheme="http" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
使用登录活动的数据方案,接收深层链接链接的用户强制登录,然后登录后我将其直接重定向到右侧活动,如下所示(algorythmic version):
private void onLoginSuccess(){
if (getIntent().getData() != null) {
//meaning the user come from a deep link
startActivityReview();
}
else{
//meaning the user just open the app withtout any arg from deep link
goToNormalActivity();
}
}
我不得不承认,它完美无缺,但当然无法在启动器活动中获取数据android:host
所以我问你,我怎么能强迫我的用户从深层链接首先登录?可能是这样的吗?
关于深层链接的活动:
if (Profile.getCurrentProfile() == null){
Intent main = new Intent(this, LoginActivity.class);
main.putExtra("action", "userNeedToComerbBackHereAfterLogin");
startActivity(main);
}
登录活动
private void onLoginSuccess(){
if (getIntent().getExtras().get("action") != null) {
Intent main = new Intent(this, DeepLinkedAcitivty.class);
startActivity(main);
else{
// Normal Behavior ...
}
我觉得必须有更好的方法,是吗?
非常感谢