快速上手
一、前提条件
- DevEco Studio 5.0.2 Release 或以上版本
- 本项目支持版本: 支持最低系统版本为:5.0.2(14)
创建项目并引入SDK
创建HarmonyOS项目
- 打开DevEco Studio 并点击Create a new project。
- 输入项目名称(Product Name)、API版本(Compatible SDK)、设备类型(Device Type)Phone等项目信息,并点击Finish。
获取SDK
- SDK接口以har形式提供
导入SDK
- 找到livesdk.har包,导入程序中
- 依赖:livesdk.har中的dependencies说明 "@ohos/ijkplayer": "^2.0.5", "@nimsdk/base": "^10.8.10", "@nimsdk/chatroom": "^10.8.10", "@nimsdk/nim": "^10.8.10"
- 在oh-package.json5中,添加dependencies (目前只支持本地依赖方式) "dependencies": { "livesdk":"file:../livesdk" }
二、直播SDK快速集成
1、初始化
我们支持两种初始化方式,以满足您的集成需求:
初始化方法一:
QSLiveSDK.init()
初始化方法二: 倘若您需要延迟进行初始化操作(隐私合规需求),可以使用QSLiveSDK.config()与QSLiveSDK.lateinit()配合使用。
QSLiveSDK.config()
注意:必须在Application的onCreate()方法中调用,该方法不会有性能损耗。
QSLiveSDK.lateinit()
注意:该方法无初始化作用域限制。
2、进入和退出直播间
(1)进入直播间
接口:QSLiveSDK.joinLive(req: QSLiveReq, callback: (resultCode: Int) -> Unit)
需要传递的参数定义在QSLiveReq类中
类名 | 参数 | 说明 |
QSLiveReq | 见下面的详细说明 | 进入直播间需要传递的参数 https://developer.quanshi.com/cn/api/77 参数来自云直播详情接口 如果直播开启了白名单验证,进入直播间时需要传入手机号或邮箱,只有在白名单配置中的手机号或邮箱才能成功进入直播间 |
callback | 进入直播状态回调 | 0为成功,非0见下面的详细说明 |
QSLiveReq参数详细说明
参数 | 说明 | 必传 |
userName | 姓名。 在直播间中显示或在云会议会中显示的姓名 | 是。倘若audienceJoinUrl如果有user相关信息会覆盖 |
pcode | 直播码 | 否。与audienceJoinUrl 必二选一 |
meetingCode | 会议密码 | 否 |
conferenceId | 会议ID | 否 |
audienceJoinUrl | 观众链接 | 否。与pcode 必二选一 |
邮箱 | 否。倘若开启了直播白名单验证,则需要传入 | |
phone | 手机号 | 否。倘若开启了直播白名单验证,则需要传入 |
countryCode | 国家码。如果手机号有别的国家码,需要传入,不要带+加号,如:中国传86 | 否。与phone字段配合使用,如果不传phone字段,也不要传该字段 |
company | 机构名或公司名 | 否 |
avatar | 头像URL,在云会议会中展示 | 否 |
extUserId | 第三方用户系统的userId,主要用于统计 | 否 |
resultCode参数详细说明
返回码 | 说明 |
0 | 成功 |
-1 | 参数缺失 |
-1000 | 网络请求异常 |
10111 | 当前用户其他端在线(设备冲突) |
10112 | 当前用户其他会在线(会议冲突) |
10202 | 该直播不存在 |
50701 | 直播密码错误 |
56001 | 不在白名单内 |
(2)退出直播间
接口:QSLiveSDK.exitLive()
接口。
注意:该接口在直播间页面销毁时自动调用,默认情况下可以不调用此接口。
(3)监听直播间进出状态
QSLiveSDK提供了监听进出直播间状态的接口,可以实现下面的接口来监听状态回调。注意,状态监听的添加与移除需要配对调用,且与具体的某一场直播无关。
// 添加状态监听QSLiveSDK.addLiveRoomListener(listener: QSLiveRoomListener)// 移除状态监听QSLiveSDK.removeLiveRoomListener(listener: QSLiveRoomListener)interface QSLiveRoomListener { /** * 进出直播间状态回调 * * 1、在调用QSLiveSDK.joinLive()接口时,回调 JOIN 状态 * 2、在直播间loading消失后, 回调 JOINED 状态 * 3、在调用退出直播间接口时,回调 LEAVING状态 * 4、在直播间界面消失后,回调LEFT状态 */ fun onLiveStatusChanged(status: QSLiveRoomStatus) /** * 直播间信息变更,会在加入直播成功后提供直播间信息 */ fun onLiveRoomInfoChanged(info: QSLiveRoomInfo) /** * 画中画回调 */ fun onPicInPicChange(isPicInPic: Boolean) /** * 直播带货回调 [context]加入直播时的context对象 [info]直播带货商品信息 */ fun onBuyProduct(context: Context, info: LiveGoods) }enum class QSLiveRoomStatus { /** 正在进入 */ JOIN, /** 取消 */ CANCEL, /** 进入直播间成功 */ JOINED, /** 正在退出直播间 */ LEAVING, /** 退出直播间 */ LEFT}