本文档已不再维护,新版文档见:环信即时通讯 IM Android 快速入门。
关于登录、消息、群组等基础IM功能,请参考文档Android SDK 介绍及导入。
直播聊天室功能由于要依赖于第三方直播SDK Ucloud,代码暂时放在demo里。
使用前需要先加入Ucloud的库,加入以下依赖至你项目的module
级别的build.gradle
文件里。
compile(name: 'ucommon-android-sdk-1.0.0', ext: 'aar')
compile(name: 'ulive-android-sdk-1.5.1', ext: 'aar')
compile(name: 'uvod-android-sdk-1.5.8', ext: 'aar')
请注意: 因为demo中的推拉流使用的是临时地址,用户在集成时需要使用“服务器集成”中的方法设置自己申请的直播的推流拉流地址。
/**
* 创建直播室
* @param module 包括直播室名称,直播室描述,直播室房主,直播室封面,直播室最大人数
*/
@POST("appserver/liverooms")
LiveData<LiveRoom> createLiveRoom(@Body LiveRoom module);
/**
* 开始直播,status为ongoing
* @param roomId 直播间id
* @param username 主播id
* @param status 直播状态
* @return
*/
@POST("appserver/liverooms/{liveroomid}/users/{username}/{status}")
LiveData<LiveRoom> changeLiveStatus(@Path("liveroomid") String roomId,
@Path("username") String username,
@Path("status") String status);
/**
* 结束直播,status为offline
* @param roomId 直播间id
* @param username 主播id
* @param status 直播状态
* @return
*/
@POST("appserver/liverooms/{liveroomid}/users/{username}/{status}")
LiveData<LiveRoom> changeLiveStatus(@Path("liveroomid") String roomId,
@Path("username") String username,
@Path("status") String status);
/**
* 获取正在直播的直播室列表
* @param limit 一次取的条数
* @param cursor 在这个游标基础上取数据,首次获取传null
* @return
*/
@GET("appserver/liverooms/ongoing")
LiveData<ResponseModule<List<LiveRoom>>> getLivingRoomList(@Query("limit") int limit, @Query("cursor") String cursor);
/**
* 获取直播室列表
* @param limit 一次取的条数
* @param cursor 在这个游标基础上取数据,首次获取传null
* @return
*/
@GET("appserver/liverooms")
LiveData<ResponseModule<List<LiveRoom>>> getLiveRoomList(@Query("limit") int limit, @Query("cursor") String cursor);
/**
* 直播室详情
* @param roomId 直播室id
* @return
*/
@GET("appserver/liverooms/{id}")
LiveData<LiveRoom> getLiveRoomDetail(@Path("id") String roomId);
直接调用聊天室的加入接口即可。
String chatroomId = liveRoom.getChatroomId();
EMClient.getInstance().chatroomManager().joinChatRoom(chatroomId,callback);
直接调用聊天室的退出接口即可。
String chatroomId = liveRoom.getChatroomId();
EMClient.getInstance().chatroomManager().leaveChatRoom(chatroomId);
/**
* 更新直播室
* @param roomId 直播室id
* @param body 包括直播室名称(name),直播室描述(description),
* 直播间成员最大数(maxusers),直播间封面Url(page),直播间自定义属性(ext,Map类型)
* @return
*/
@PUT("appserver/liverooms/{id}")
LiveData<LiveRoom> updateLiveRoom(@Path("id") String roomId, @Body RequestBody body);
考虑到用户会连续点击,建议做消息合并处理,降低服务器压力。比如可以采取设置定时器,每隔几秒将这个期间的点赞数一次性发送。也可参考demo中实现Android直播demo。