xq5273508 / mimc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

基于MIMC(小米消息云)封装的Web消息开发包

SDK组成

1、Enum:枚举项
  EnumStatus、EnumDevice、EnumGroupNotice

2、Register: 消息事件注册,提供接收消息(人、群)、登录Token、群消息、登录状态改变

3、Service: 消息服务
  提供配置初始化、登录、退出登录、发消息

4、Group: 群操作
  提供获取用户所有群列表、获取某个群详情、建群、解散群、踢人、退群、邀请入群

5、Ajax:提供同步、异步多种Method的Web请求
  GetSync、GetAsync、PostSync、PostAsync、DeleteSync、DeleteAsync

一、枚举项

1、EnumStatus 用户状态枚举
  Connecting: -1, //登录中
  None: 0, //未登录
  Connected: 1, //登录成功
  Elsewhere: 2, //别处登录
  DisConnect: 3, //断开连接

2、EnumDevice 登录设备枚举(系统会进行同一设备不允许多端登录的控制)
  Mobile: 1, //手机端
  PC: 2, //电脑端
  Server: 4 //系统服务

3、EnumGroupNotice 群通知类型
  Dismiss: 2, //解散群
  ApplyJoinReply: 11, //加群申请回复
  InviteJoin: 12, //邀请入群
  InviteJoinReply: 13,//邀请入群回复
  Join: 14, //有成员加入
  MemberRemove: 21, //踢成员出群
  MemberQuit: 22, //退群
  SetRole: 30, //设置角色
  AddRole: 31, //增加角色
  RemoveRole: 32, //去除角色
  ApplyJoin: 40 //申请入群

二、Register

1、fetchToken
外部注册请求Token的方法,只支持同步获取
事件参数:

调用方式:
MIMC.Register("FetchToken", ()=>{
  //1、调用认证代理服务TokenProxyServer,由认证代理调用小米Token服务
  //sync.get("//api.maidiyun.com/im/mitoken/account");
  //2、直接调用小米Token服务
  const data = {appId, appKey, appSecret, appAccount};
  MIMC.PostSync("https://mimc.chat.xiaomi.net/api/account/token", data);
});

2、stateChange
用户在线状态事件注册
事件参数:
@param status {EnumStatus}
调用方式:
MIMC.Register("StateChange", (status) => {
  console.log("stateChange", status);
});

3、receiveMessage
接收消息(用户、群消息)
事件参数:
@param message {Object:{id, timestamp, sender, content, group_id}}
  id:消息客户端id(作用类似于上一版的domain)
  timestamp:消息发送时间戳
  sender:消息发送人
  content:消息内容
  group_id:消息所属群id(接收用户消息的时候该属性为undefined,只有群消息才返回群号)
调用方式:
MIMC.Register("ReceiveMessage", (message) => {
  console.log("receiveMessage", message);
});

4、groupNotice
群通知注册,由于小米不支持群通知,所以使用指令来模拟群消息(<m_mimc,4)
事件参数:
@param type {EnumGroupNotice}
@param notice {Object}
调用方式:
MIMC.Register("GroupNotice", (type,notice) => {
  console.log("groupNotice",type,notice);
});
7、sync(需要完善)
用于进行多端状态同步的事件
事件参数:
暂空缺
调用方式:
暂空缺

三、Service

1、config(appId, appAccount, device = EnumDevice.Mobile)
小米消息云数据初始化,初次登录或者切换用户时调用
@param appId {string} 小米消息云appId
@param appAccount {string} 要登录小米消息云的用户账号
@param version {number} 消息版本,用来处理接收消息时判断是否进行消息格式转换
@param device {EnumDevice} 当前登录的设备类型,用来处理账号在同一类设备只能登录一次,小米消息云中的resource前4位为device信息

2、async login()
登录小米消息云

3、logout()
退出小米消息云登录

4、send(toAccount, message, packetId = "", isGroup = false)

消息发送,给群发消息的时候toAccount为群编号,is_group设置为true
@param toAccount {string} 消息接收人编号(可以是群号)
@param message {string} 消息内容
@param packetId {string} 消息客户端ID
@param is_group {boolean} 是否是给群组发消息

5、online(accounts, device = EnumDevice.Mobile)
查询用户在线状态
@param accounts {string} 要查询的用户
@param device {EnumDevice} 要查询的设备

四、Group

1、async list()
获取加入的群列表

2、async info(id)
获取群详情
@param id {string} 群号

3、async create(name, members)
创建群
@param name {string} 群名称
@param members {string} 群成员id列表(,分割id)

4、async invite(id, members)
邀请成员加入群,不需要被邀请人同意,直接加入群
@param id {string} 群编号
@param members {string} 群成员id列表(,连接)

5、async apply(id, owner,remark)
申请入群
@param id {string} 群号
@param owner {string} 群主
@param remark {string} 申请备注

6、async reply(id, member, agree = true)
申请入群回复
@param id {string} 群号
@param member {string} 申请人
@param agree {boolean} 同意

7、async remove(id, members,token)
删除群成员
@param id {string} 群号
@param members {string} 要踢的群成员id列表(,连接)
@param token {string} 群主token(支持业务自己判断是否是管理员,如果是管理员,则允许使用群主的身份踢人)

8、async quit(id)
退群操作
@param id {string} 群号

9、async set_admin(id,member)
设置群管理员
@param id {string} 群号
@param member {string} 成员编号

10、async cancel_admin(id,member)
取消群管理员
@param id {string} 群号
@param member {string} 成员编号

11、async dismiss(id)
根据群号解散群
@param id {string} 群号

五、数据请求

1、GetSync(url, data, headers)
同步方式调用GET
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息

2、GetAsync(url, data, headers)
异步方式调用GET,返回Promise
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息

3、PostSync(url, data, headers)
同步方式调用POST
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息

4、PostAsync(url, data, headers)
异步方式调用POST,返回Promise
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息

5、DeleteSync(url, data, headers)
同步方式调用DELETE
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息
6、DeleteAsync(url, data, headers)

异步方式调用DELETE,返回Promise
@param url {string} 数据请求地址
@param data {Object} 请求的数据
@param headers {Object} 请求携带的Header信息

About


Languages

Language:JavaScript 83.1%Language:HTML 16.9%