HarmonyOS鸿蒙消息服务SDK

概述

鸿蒙消息服务SDK主要提供直播频道内的消息接收发送、频道信息获取、直播状态获取、直播地址获取等功能。 为开发者提供简单易用的接口,方便接入目睹直播服务。

开发准备

环境要求 (下载请联系商务)

  • DevEco Studio 5.0.3及以上版本
  • HarmonyOS 4.0.0(API 10)以上版本
  • 开发模型基于 stageMode 模型

集成SDK

  1. 将mdl.har 放入library包下
  2. 项目包管理文件 entry/src/oh-package.json5dependencies 添加如下内容:
    {
     ...
     "dependencies": {
       "@mudu/mdl": "file:./library/mdl.har"
     }
     ...
    }
    
  3. 具体模块使用导入
    import { MDConfig } from '@mudu/mdl'
    
  4. 配置APP权限, 模块文件entry/src/main/module.json5requestPermissions添加:
     { 
     ...
     "requestPermissions": [
       {
         "name": "ohos.permission.INTERNET"
       },
       {
         "name": "ohos.permission.GET_NETWORK_INFO"
       }
     ]
     ...
     }
    

快速开始

  1. 设置 key,若没有account key,请联系客服咨询

     MDConfig.setAccountKey("xxxxxxxx")
    
  2. 设置全局频道HashId(可通过频道详情接口actid字段获取)

     MDConfig.setActivityId("xxxxxxxx")
    
  3. 鉴权登录

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)=>{
      //登录失败
    })
  1. 设置消息监听

    import { messageCenter, MessageType } from '@mudu/mdl';
    messageCenter.on(MessageType.OnComment, (comment: Comment)=>{
       logger.debug(TAG, "message receive: OnComment - "+JSON.stringify(comment))
    })
    
    //...
    
  2. 发送评论消息

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)=>{
    // 发送失败
  })
  1. 获取评论配置及历史评论列表

     //获取评论配置
     commenter.config().then((config: CommentConfig)=>{
       // CommentConfig 评论配置
     })
     //获取历史评论列表
     commenter.getCommentList(1).then((commentList: CommentList)=>{
       // 历史评论列表
       let list: Comment[] = commentList.data
     })
    
  2. 获取直播拉流地址

    /**
    * 获取直播流地址
    */
    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)
     }
    }
    
  3. 退出销毁

    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 未登录!

results matching ""

    No results matching ""