> >

1.当启动页activity为singleTop或singleTask的启动模式时,需要在系统回调方法onNewIntent()中将intent设置为新收到的intent,MobLink需要根据启动intent判断程序是否通过scheme启动,新增如下处理。示例代码如下:

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    //设置场景还原监听
    MobLink.setIntentHandler(getIntent(), new ActionListener() {
        public void OnResult(HashMap<String, Object> params) {
            //解析params就可以得到产生MobId时传入的参数、来源数据
            //TODO
        }
        public void onError(Throwable t) {
            //返回场景还原失败的监听
            //TODO
        }
    });
}

2.设置场景还原过程监听,对于想监听场景跳转过程的,可以设置如下方法:

MobLink.setRestoreSceneListener(new RestoreSceneListener() {
    public void onBeginCheckScene() {
        //开始检查场景还原
    }

    public void onFinishCheckScene() {
        //检查场景还原结束
    }

    public boolean isCloseRestoreScene() {
        //是否进行场景还原,如false则自动跳转到对应界面
        //如true,则数据通过onReturnSceneData方法返回
        return false;
    }

    public void onReturnSceneData(HashMap<String, Object> result) {
        //当isCloseRestoreScene方法返回true,场景不会跳转,直接返回数据
    }
});
接口说明
- (void)onBeginCheckScene() 开始检测是否需要场景还原
- (void)onFinishCheckScene() 结束检测是否需要场景还原
- (void)isCloseRestoreScene() 设置是否需要场景恢复(true不恢复;false恢复场景,根据服务返回的scheme url数据自动跳转到对应界面)
- (void)onReturnSceneData(HashMap<String, Object> result) 当isCloseRestoreScene返回值为true时,则返回场景数据;返回值为false时,不返回场景数据,直接跳转

3.多个不同activity的场景还原配置

对于应用只有一个固定的跳转页面,只配置scheme就可以了,请参考上面的Android快速集成第二点AndroidManifest配置。

如果一个应用有多个页面需要跳转,由于只能配置一个scheme,所以需要同时配置host和path来区别不同页面的activity,代码如下:

<activity>
    android:name=".ActivityC"
    android:screenOrientation="portrait"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="mlink" android:host="com.mob.moblink.demo" android:path="/demo/c"/>
    </intent-filter>
</activity>

<activity>
    android:name=".ActivityD"
    android:screenOrientation="portrait"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="mlink" android:host="com.mob.moblink.demo" android:path="/demo/d"/>
    </intent-filter>
</activity>

具体案例可以参考官网Android例子。