融云集成单聊与会话列表( 二 )


这里同样和会话列表一样,host一定要设置成自己的 id 。
5.启动会话和会话列表
/***启动会话界面* @param context应用上下文 。* @param conversationType 会话类型 。* @param targetId根据不同的 conversationType,可能是用户 Id、群组 Id 或聊天室 Id 。* @param title聊天的标题,开发者可以在聊天界面通过 intent.getData().getQueryParameter("title") 获取该值, 再手动设置为标题 。*/public void startConversation(Context context, Conversation.ConversationType conversationType, String targetId, String title)/*** 启动单聊界面 。** @param context应用上下文 。* @param targetUserId 要与之聊天的用户 Id 。* @param title聊天的标题,开发者需要在聊天界面通过 intent.getData().getQueryParameter("title")*获取该值, 再手动设置为聊天界面的标题 。*/RongIM.getInstance().startPrivateChat(getActivity(), targetUserid, title);
/*** 启动会话列表界面 。** @param context应用上下文 。* @param supportedConversation 定义会话列表支持显示的会话类型,及对应的会话类型是否聚合显示 。*例如:supportedConversation.put(Conversation.ConversationType.PRIVATE.getName(), false) 非聚合式显示 private 类型的会话 。*/public void startConversationList(Context context, Map supportedConversation)
6.用户信息
在融云的官方介绍中,对用户信息做了说明 。
融云认为,每一个设计良好且功能健全的 App 都应该能够在本地获取、缓存并更新用户信息 。所以,融云不维护用户基本信息(用户
Id、昵称、头像) 。此外,App 提供用户信息也避免了由于缓存导致的用户信息更新不及时,App 中不同界面上的用户信息不统一(比如:一部分
App 从 App 服务器上获取并显示,一部分由融云服务器获取并显示),能够获得更好的用户体验 。
融云提供了两种方式从 App 的数据源显示用户昵称和头像 。
7.退出融云
与融云服务器断开连接有两种方式:
RongIM.logout()RongIM.disconnect();
表示与融云的服务器断开连接后,有别人发过来的消息,不接收通知 。
表示与融云的服务器断开连接后,有别人发送过来的消息,接受通知 。
8.通知
应用切后台,在有消息过来的时候,往往会有通知提示 。
我们需要创建一个继承,如下:
public class SealNotificationReceiver extends PushMessageReceiver {@Overridepublic boolean onNotificationMessageArrived(Context context, PushNotificationMessage message) {return false; // 返回 false, 会弹出融云 SDK 默认通知; 返回 true, 融云 SDK 不会弹通知, 通知需要由您自定义 。}@Overridepublic boolean onNotificationMessageClicked(Context context, PushNotificationMessage message) {return false; // 返回 false, 会走融云 SDK 默认处理逻辑, 即点击该通知会打开会话列表或会话界面; 返回 true, 则由您自定义处理逻辑 。}}
然后在中静态注册接收器

这样,在融云推送消息的时候,通知栏就能弹出消息,更多关于推送的内容可以去官网查看,点击这里
9.服务器连接状态监听
在进行融云相关请求和操作的时候,我们往往需要知道与服务器的连接状态,连接正常才有必要进行下一步 。
public class RongYunConnectionStatusListener implements RongIMClient.ConnectionStatusListener {private Context context;public RongYunConnectionStatusListener(Context context){this.context = context;}@Overridepublic void onChanged(ConnectionStatus connectionStatus) {switch (connectionStatus){case CONNECTED://连接成功 。break;case DISCONNECTED://断开连接 。break;case CONNECTING://连接中 。break;case NETWORK_UNAVAILABLE://网络不可用 。break;case KICKED_OFFLINE_BY_OTHER_CLIENT://用户账户在其他设备登录,本机会被踢掉线new Handler(Looper.getMainLooper()).post(new Runnable() {@Overridepublic void run() {/*** 被踢掉后,弹框提示*/ToastUtil.shortToast(context,"账号在其他设备登录,请重新登录");/*** 被踢掉后,跳转到登录界面*/Intent intent=new Intent(context,LoginActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);context.startActivity(intent);}});break;}}}