HarmonyOS鸿蒙消息服务SDK
概述
鸿蒙消息服务SDK主要提供直播频道内的消息接收发送、频道信息获取、直播状态获取、直播地址获取等功能。 为开发者提供简单易用的接口,方便接入目睹直播服务。
开发准备
环境要求 (下载请联系商务)
- DevEco Studio 5.0.3及以上版本
- HarmonyOS 4.0.0(API 10)以上版本
- 开发模型基于 stageMode 模型
集成SDK
- 将mdl.har 放入library包下
- 项目包管理文件
entry/src/oh-package.json5
中dependencies
添加如下内容:{ ... "dependencies": { "@mudu/mdl": "file:./library/mdl.har" } ... }
- 具体模块使用导入
import { MDConfig } from '@mudu/mdl'
- 配置APP权限, 模块文件
entry/src/main/module.json5
中requestPermissions
添加:{ ... "requestPermissions": [ { "name": "ohos.permission.INTERNET" }, { "name": "ohos.permission.GET_NETWORK_INFO" } ] ... }
快速开始
设置 key,若没有account key,请联系客服咨询
MDConfig.setAccountKey("xxxxxxxx")
设置全局频道HashId(可通过频道详情接口actid字段获取)
MDConfig.setActivityId("xxxxxxxx")
鉴权登录
3.1 导入 authrization
模块
import { authorization, User } from '@mudu/mdl'
import { MDError } from '@mudu/mdl';
3.2 匿名登录
authorization.loginByAnonymous("匿名用户", "头像地址").then((rt: User)=>{
//登录成功
this.initRoom()
}).catch((e: MDError)=>{
//登录失败
})
3.3 OAuth2登录
// 需由后端完成该AKSK请求,客户端通过ticket换取用户token
authorization.loginByOAuth2(ticket).then((rt:User)=>{
//登录成功
this.initRoom()
}).catch((e: MDError)=>{
//登录失败
})
3.4 第三方平台登录
let user: MDPlatformUser = {
//...
}
authorization.loginByPlatformUser(user).then((rt: User)=>{
//登录成功
this.initRoom()
}).catch((e: MDError)=>{
//登录失败
})
3.5 已有token登录,token有有效期,请勿长时间缓存
authorization.loginByToken("xxxxxx").then((rt:User)=>{
//登录成功
this.initRoom()
}).catch((e: MDError)=>{
//登录失败
})
设置消息监听
import { messageCenter, MessageType } from '@mudu/mdl'; messageCenter.on(MessageType.OnComment, (comment: Comment)=>{ logger.debug(TAG, "message receive: OnComment - "+JSON.stringify(comment)) }) //...
发送评论消息
5.1 导入 commenter
模块
import { commenter } from '@mudu/mdl'
5.2 发送普通消息
commenter.publish("消息内容").then((rt: boolean)=>{
// 发送成功
}).catch((err:MDError)=>{
// 发送失败
})
5.3 发送匿名消息
// 发送匿名消息前需要先设置匿名昵称
await commenter.setAnonymousNickname("匿名昵称", "https://avatar")
commenter.publishByAnonymous("匿名消息内容").then((rt: boolean)=>{
// 发送成功
}).catch((err:MDError)=>{
// 发送失败
})
获取评论配置及历史评论列表
//获取评论配置 commenter.config().then((config: CommentConfig)=>{ // CommentConfig 评论配置 }) //获取历史评论列表 commenter.getCommentList(1).then((commentList: CommentList)=>{ // 历史评论列表 let list: Comment[] = commentList.data })
获取直播拉流地址
/** * 获取直播流地址 */ getLiveAddress() { // 需根据频道状态进行判断是否为列表直播。若没有列表直播的需求,可无需此步判断 let activityInfo: ActivityInfo = await activity.activityInfo() //常规直播 if(activityInfo?.list_live_status === 0) { let normalLiveAddress: Array<LiveAddress> = await activity.normalLiveAddress() if(!normalLiveAddress || normalLiveAddress.length == 0) return; for(const liveAddress of normalLiveAddress){ // 国内拉流地址 let internalSignList: Sign[] = liveAddress?.internal?.sign_list ?? [] for(const sign of internalSignList){ let resolutions: Resolution[] = sign?.resolutions ?? [] for(const resolution of resolutions){ logger.info(TAG, "常规直播播放地址:" + resolution?.pull_address + " - " + resolution?.resolution ) } } } } //列表直播 else { let listLiveAddress: string = await activity.listLiveAddress() logger.info(TAG, "列表直播播放地址:" + listLiveAddress) } }
退出销毁
MDConfig.destroy()
相关类及枚举介绍
1. 模块介绍
MDConfig 全局配置
成员方法 | 功能 |
---|---|
setAccountKey | 设置AccountKey |
setActivityId | 设置频道HashId |
setLogLevel | 设置日志等级 |
destroy | 销毁 |
version | 版本号 |
authorization 鉴权模块
成员方法 | 功能 |
---|---|
loginByAnonymous | 匿名登录 |
loginByOAuth2 | OAuth2登录 |
loginByPlatformUser | 第三方平台登录 |
loginByToken | token登录 |
token | 已登录用户token |
session | 已登录用户session |
isLogined | 是否已鉴权登录 |
activity 频道模块
成员方法 | 功能 |
---|---|
activityInfo | 获取频道信息 |
upv | 获取频道upv |
normalLiveAddress | 常规直播地址 |
listLiveAddress | 列表直播地址 |
commenter 评论模块
成员方法 | 功能 |
---|---|
config | 获取评论配置 |
publish | 发送普通消息 |
setAnonymousNickname | 设置匿名用户 |
publishByAnonymous | 发送匿名消息 |
getCommentList | 获取历史评论列表 |
messageCenter 消息中心
成员方法 | 功能 |
---|---|
on | 监听消息 |
off | 移除监听 |
错误码
错误码 | 说明 |
---|---|
10000 | 频道ID不合法! |
10001 | 参数设置有误! |
10101 | 未设置License许可证! |
10102 | 验证License许可证失败! |
10103 | 该频道并发已到上限! |
10300 | 发送消息失败! |
10301 | 获取消息列表失败! |
10302 | 请先设置昵称! |
10303 | 匿名评论需传入名称! |
10304 | 匿名观众不允许匿名聊天! |
10305 | 昵称包含敏感词! |
10400 | 获取数据解析失败! |
10404 | 网络问题无法获取! |
10500 | 获取拉流地址失败! |
30001 | im发送错误 |
30002 | im内部错误 |
30003 | im重连错误 |
30004 | im关闭错误 |
50000 | oauth2授权登录失败! |
50001 | 第三方登录数据解析失败! |
50002 | 匿名登录数据解析失败! |
50003 | Session数据解析失败! |
50004 | 未登录! |