目录

引入头文件

    <script type="text/javascript" src="mimc-min_1_0_2.js"></script>

用户初始化

默认支持多设备登录,根据浏览器UserAgent做设备区分
user = new MIMCUser(appId, appAccount);
user.registerFetchToken(fetchMIMCToken);         //获取token回调
user.registerStatusChange(statusChange);         //登录结果回调
user.registerServerAckHandler(serverAck);        //发送消息后,服务器接收到消息ack的回调
user.registerP2PMsgHandler(receiveP2PMsg);       //接收单聊消息回调
user.registerGroupMsgHandler(receiveP2TMsg);     //接收群聊消息回调
user.registerPullNotificationHandler(pullNotificationHandler); //拉取离线消息回调
user.registerDisconnHandler(disconnect);         //连接断开回调
user.registerUCDismissHandler(ucDismiss);        //解散无限大群回调
user.registerUCJoinRespHandler(ucJoinResp);      //加入无限大群回调
user.registerUCMsgHandler(ucMessage);            //接收无限大群消息回调
user.registerUCQuitRespHandler(ucQuitResp);      //退出无限大群回调

安全认证

参考 安全认证 ,实现以下API:

    /**
     * 同步访问代理认证服务(appProxyService),
     * 从代理认证服务返回结果中解析[小米认证服务下发的原始数据]并返回
     **/
    function fetchMIMCToken() {
    }

登录

    user.login();

在线状态变化回调

    /**
     * @param[bindResult] bool: true/false 表示登录成功/失败
     * @param[errType] string: 登录失败类型
     * @param[errReason] string: 登录失败原因
     * @param[errDesc] string: 登录失败描述
     **/
    function statusChange(bindResult, errType, errReason, errDesc) {
    }

发送单聊消息

    /**
     * @param[appAccount] string: 消息接收者在App账号系统的账号ID
     * @param[payload] string UTF-8: 用户自定义消息体
     * @param[bizType] string: 消息类型,默认空字符串
     * @param[isStore] bool: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储
     # @return string: 由客户端生成的消息ID
     **/
    var packetId = user.sendMessage(appAccount, payload, isStore);
    var packetId = user.sendMessage(appAccount, payload, bizType, isStore);

发送群聊消息

    /**
     * @param[groupId] string: 群ID,也名为topicId
     * @param[payload] string UTF-8: 用户自定义消息体
     * @param[bizType] string: 消息类型,默认空字符串
     * @param[isStore] bool: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储
     # @return string: 由客户端生成的消息ID
     **/
    var packetId = user.sendGroupMessage(groupId, payload, isStore);
    var packetId = user.sendGroupMessage(groupId, payload, bizType, isStore);

服务器响应回调

    /**
     * @param[packetId] string: 成功发送到服务器消息的packetId,即sendMessage(,)的返回值
     * @param[sequence] string: 服务器生成,单用户空间内递增唯一,可用于排序(升序)/去重
     * @param[timeStamp] string: 消息到达服务器时间(ms)
     * @param[errMsg] string: 服务器返回的错误信息
     **/
    function serverAck(packetId, sequence, timeStamp, errMsg) {
    }

接收消息回调

    /**
     * @param[P2PMsg] object: 接收到的P2P消息体
     **/
    function receiveP2PMsg(P2PMsg) {
        P2PMsg.getPacketId(); // 客户端生成的消息ID
        P2PMsg.getSequence(); // 由服务器生成,用于去重排序(升序)
        P2PMsg.getFromAccount(); // 消息发送者在APP账号系统的账号ID
        P2PMsg.getTimeStamp(); // 消息发送时间戳
        P2PMsg.getBizType(); //消息类型
        P2PMsg.getPayload(); // payload为用户自定义消息,UTF-8 string类型
    }

接收群聊消息回调

    /**
     * @param[P2TMsg] object: 接收到的P2T消息体
     **/
    function receiveP2TMsg(P2TMsg) {
        P2TMsg.getPacketId(); // 客户端生成的消息ID
        P2TMsg.getSequence(); // 由服务器生成,用于去重排序(升序)
        P2TMsg.getFromAccount(); // 消息发送者在APP账号系统的账号ID
        P2TMsg.getTopicId(); // 群ID
        P2TMsg.getTimeStamp(); // 消息发送时间戳
        P2TMsg.getBizType(); //消息类型
        P2TMsg.getPayload(); // payload为用户自定义消息,utf-8 string类型
    }

拉取离线消息通知回调

    /**
     * 通知主动拉取离线消息,拉取区间:(minSequence, maxSequence]
     * 默认情况,当用户处于离线状态时,最多保留近7天内的离线消息,直到用户上线,持续下发缓存的离线消息。
     * 若积压的离线消息过多,会一直下发离线消息,从而导致长时间无法接收最新消息,直到离线消息接收完毕为止。
     * 我们支持设置一个阈值来控制离线消息是否持续下发,比如阈值设置为offlineMsgMaxCount=500,表示当离线消息达到500条时,触发onPullNotification(...)
     * 回调,当回调接口返回true时,服务端会跳过离线消息,直接下发最新的实时消息,应用方可根据回调形参单独去拉取离线消息。
     * 1)首先拉取会话列表;
     * 2)然后用会话列表中的"sequence"字段和回调接口的“minSequence”形参进行比对,当sequence > minSequence时,说明需要拉取该会话的历史消息;
     * 3)最后拉取历史消息,其中"fromAccount"字段从会话列表中提取即可。
     * 会话列表:https://admin.mimc.chat.xiaomi.net/docs/13-chatlist.html
     * 历史消息:https://admin.mimc.chat.xiaomi.net/docs/11-history.html
     */
    /**
     * @param[minSequence] String: 离线消息最小的sequence
     * @param[maxSequence] String: 离线消息最大的sequence
     **/
    function pullNotificationHandler(minSequence, maxSequence) {}

无限大群

创建无限大群

     /**
     * @param[groupName] string: 群名称
     * @param[createUCGroupCB] func: 创建无限大群回调
     * @param[context] : 用户自定义内容,通过回调函数原样传出
     **/
    user.createUnlimitedGroup(groupName, createUCGroupCB, context);

创建无限大群回调

     /**
     * @param[topicId] string: 群id
     * @param[topicName] string: 群名称
     * @param[isSuccess] bool: 是否创建成功
     * @param[errMsg] string: 错误信息
     * @param[context] : 用户自定义传入的内容
     **/
    function createUCGroupCB(topicId, topicName, isSuccess, errMsg, context)

加入无限大群

     /**
     * @param[topicID] string: 群id,必须为string类型
     * @param[context] : 用户自定义内容,通过回调函数原样传出
     **/
    user.joinUnlimitedGroup(topicID, context);

加入无限大群回调

     /**
     * @param[topicId] string: 群id
     * @param[code] int: 返回码,0为成功,其他为失败
     * @param[msg] string: 错误信息
     * @param[context] : 用户自定义传入的内容
     **/
    function ucJoinResp(topicId, code, msg, context)

退出无限大群

     /**
     * @param[topicID] string: 群id,必须为string类型
     * @param[context] : 用户自定义内容,通过回调函数原样传出
     **/
    user.quitUnlimitedGroup(topicID, context);

退出无限大群回调

     /**
     * @param[topicId] string: 群id
     * @param[code] int: 返回码,0为成功,其他为失败
     * @param[msg] string: 错误信息
     * @param[context] : 用户自定义传入的内容
     **/
    function ucQuitResp(topicId, code, msg, context)

群主解散无限大群

     /**
     * @param[topicID] string: 群id,必须为string类型
     * @param[dismissUCGroupCB] func: 解散无限大群回调
     * @param[context] : 用户自定义内容,通过回调函数原样传出
     **/
    user.dismissUnlimitedGroup(topicID, dismissUCGroupCB, context);

群主解散无限大群回调

     /**
     * @param[isSuccess] bool: 是否解散成功
     * @param[topicId] string: 群id
     * @param[context] : 用户自定义传入的内容
     **/
    function dismissUCGroupCB(isSuccess, topicId, context)

解散无限大群通知群成员回调

     /**
     * @param[topicId] string: 群id
     **/
    function ucDismiss(topicId)

发送无限大群消息

     /**
     * @param[topicID] string: 群id,必须为string类型
     * @param[payload] string UTF-8: 用户自定义消息体
     * @param[bizType] string: 消息类型,默认空字符串
     * @param[isStore] bool: 是否存储历史消息,默认false
     # @return string: 由客户端生成的消息ID
     **/
    user.sendUnlimitedGroupMessage(topicID, payload, isStore = false);
    user.sendUnlimitedGroupMessage(topicID, payload, bizType, isStore = false);

接收无限大群消息回调

     /**
     * @param[groupMsg] object: 接收到的P2T消息体
     **/
    function ucMessage(groupMsg)
    groupMsg.getPacketId(); // 客户端生成的消息ID
    groupMsg.getSequence(); // 由服务器生成,用于去重排序(升序)
    groupMsg.getFromAccount(); // 消息发送者在APP账号系统的账号ID
    groupMsg.getFromResource(); // 消息发送者resource
    groupMsg.getTopicId(); // 群ID
    groupMsg.getTimeStamp(); // 消息发送时间戳
    groupMsg.getPayload(); // payload为用户自定义消息,UTF-8 string类型

连接断开回调

    function disconnect() {
    }

注销

    user.logout();

回到顶部

results matching ""

    No results matching ""