点击通知启动应用时,怎么判断是否需要 connect()

怎么判断融云连接是否断开,是否需要再次调用 connect()? 比如点击通知时,如果是后台通知,IM 处于连接状态,此时不需要再次调用 connect(); 如果是推送通知,或者虽然是后台通知,但点击时 IM 连接已经断开了,需要调用 connect(). 代码里怎么进行上述场景的判断?
发布时间: 2018-10-23 11:15

回答:

参考实现:

点击通知时跳转的 activity 继承自基类 BaseActivity.

在 BaseActivity 的 onCreate() 中增加如下代码:

Intent intent = getIntent();
Uri data = intent != null ? intent.getData() : null;
String pushParam = data != null ? data.getQueryParameter("isFromPush") : null;
isPush = pushParam != null && pushParam.equals("true");
boolean isBackgroundNotify = pushParam != null && pushParam.equals("false");
//push 通知
if (isPush
        //应用被杀死,后台通知依然存在
        || (isBackgroundNotify && IMTask.IMKitApi.getCurrentConnectionStatus().equals(RongIMClient.ConnectionStatusListener.ConnectionStatus.DISCONNECTED))
        //界面被回收恢复
        || (savedInstanceState != null && !IMTask.IMKitApi.getCurrentConnectionStatus().equals(RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED))) {
    if(本地缓存有效) {
        RongIM.connect();
    }
}