快速上手

一、前提条件

  • 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、初始化

请注意NavPathStack是必填项:

QSLiveSDK.init(this.pathStack)

 

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 必二选一
email 邮箱 否。倘若开启了直播白名单验证,则需要传入
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}