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中,我们将常用的礼物等消息进行了封装。具体使用文档请参考自定义消息使用

关于点赞消息发送的建议

考虑到用户会连续点击,建议做消息合并处理,降低服务器压力。比如可以采取设置定时器,每隔几秒将这个期间的点赞数一次性发送。也可参考demo中实现Android直播demo

关于直播室禁言、白名单、黑名单等操作,请参考聊天室管理


上一页:服务端集成

下一页:iOS客户端集成