更新记录

3.0.3(2023-10-22)

修复安卓超大群id精度丢失问题

3.0.2(2023-10-13)

修复安卓api无响应问题

3.0.1(2023-10-11)

1.新增createUnlimitedGroup 创建无限大群 2.新增joinUnlimitedGroup 加入无限大群 3.新增quitUnlimitedGroup 退出无限大群 4.新增dismissUnlimitedGroup 解散无限大群 5.新增setOnCreateUnlimitedGroup 创建无限大群回调 6.新增setOnDismissUnlimitedGroupNotify 解散无限大群通知

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:11 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


当前版本3.0.1
demo配置

小米开放平台地址申请账号 https://dev.mi.com/platform/mimc 申请后填写配置 配置文件目录common/config.js

    appId: "",
    appKey: "",
    appSecret:"",
    regionKey:"REGION_CN",
    version:1
体验APP

image

https://fir.xcxwo.com/dagkyl

交流qq群 631626601
相关API
const YmChat = uni.requireNativePlugin('HY-MimcModule')
import Constants from '@/common/constants.js'
import config from './config';
const ImSdk ={
    httpPost:function(url,data){
        return new Promise((resolve, reject)=>{
            let header={"Content-Type":"application/json"};
            if(uni.getStorageSync(Constants.TOKEN)){
                header.token=uni.getStorageSync(Constants.TOKEN)
            }
            uni.request({
                url: url,
                data: data,
                header: header,
                method:"POST",
                success: (res) => {
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            });
        })

    },
    httpGet:function(url,data){
        return new Promise((resolve, reject)=>{
            let header={"Content-Type":"application/json"};
            if(uni.getStorageSync(Constants.TOKEN)){
                header.token=uni.getStorageSync(Constants.TOKEN)
            }
            uni.request({
                url: url,
                data: data,
                header: header,
                method:"GET",
                success: (res) => {
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            });
        })
    },
    getStorageToken(){
        return uni.getStorageSync(Constants.TOKEN)
    },
    getToken(appId,appKey,appSecret,appAccount,regionKey){
        const url="https://mimc.chat.xiaomi.net/api/account/token"
        const data={appId,appKey,appSecret,appAccount,regionKey}
        return this.httpPost(url,data)
    },
    /**
     * 是否开启单点登录
     * @param {Object} enable bool
     */
    enableSSO(enable){
        YmChat.enableSSO(enable)
    },
    /**
     * 执行登录
     * @param {Object} token
     */
    login(token,func){
        console.log(token)

        YmChat.initSDK(token)
        YmChat.login(function(res){
            console.log(JSON.stringify(res))
            if(func){
                func(res)
            }
        })
    },
    //获取查询token
    getUserToken(func){

        YmChat.getToken(func)
    },
    /**
     * 退出登录
     */
    logout(){
        YmChat.logout()
    },
    //接收单聊消息
    (func){
        if(func){
            YmChat.setOnMessage(func)
        }
    },
    //状态变化回掉
    onStatusChanged(func){
        if(func){
            YmChat.setOnStatusChanged(func)
        }
    },
    //接收群聊消息/超大群消息
    onGroupMessage(func){
        if(func){
            YmChat.setOnGroupMessage(func)
        }
    },
    //onServerAck对象
    onServerAck(func){
        if(func){
            console.log("设置onServerAck监听")
            YmChat.setOnServerAck(func)
        }
    },
    //在线消息回掉
    MessageAck(func){
        if(func){
            YmChat.setOnOnlineMessageAck(func)
        }
    },
    //单聊消息发送超时
    onSendMessageTimeout(func){
        if(func){
            YmChat.setOnSendMessageTimeout(func)
        }
    },
    //发送群聊消息超时
    onSendGroupMessageTimeout(func){
        if(func){
            YmChat.setOnSendGroupMessageTimeout(func)
        }
    },
    //加入无限大群通知
    onJoinUnlimitedGroup(func){
        if(func){
            YmChat.setOnJoinUnlimitedGroup(func)
        }
    },
    //退出无限大群通知
    onQuitUnlimitedGroup(func){
        if(func){
            YmChat.setOnQuitUnlimitedGroup(func)
        }
    },
    //解散无限大群回调
    onDismissUnlimitedGroup(func){
        if(func){
            YmChat.setOnDismissUnlimitedGroup(func)
        }
    },
    //解散无限大群通知
    onDismissUnlimitedGroupNotify(func){
        if(func){
            YmChat.setOnDismissUnlimitedGroupNotify(func)
        }
    },
    //创建无限大群回调
    onCreateUnlimitedGroup(func){
        if(func){
            YmChat.setOnCreateUnlimitedGroup(func)
        }
    },
    //通知拉取离线消息
    onPullNotification(func){
        if(func){
            YmChat.setOnPullNotification(func)
        }
    },
    /**
     * 发送单聊消息
     * @param[toAccount]: 消息接收方在APP账号系统内的唯一账号ID
     * @param[payload]: 开发者自定义消息体,最大不超过15KB
     * @param[isStore]: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储
     * @param[bizType]: 消息类型,默认空字符串
     * @param[isConversation]: 是否发送会话消息,默认false
     * @return 客户端生成的消息ID,返回null说明消息未进入发送队列
     */
    sendMessage(toAccount,payload,bizType,isStore,isConversation){
        const message={
            toAccount,
            payload,
            bizType,
            isStore,
            isConversation
        }
        return new Promise((resolve, reject)=>{
            YmChat.sendMessage(message,res=>{
                console.log("返回哈哈哈哈:",JSON.stringify(res))
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })

    },
    /**
     * 发送群消息
     * @param[topicId]: 群ID
     * @param[payload]: 开发者自定义消息体,最大不超过15KB
     * @param[isStore]: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储
     * @param[bizType]: 消息类型,默认空字符串。
     * @param[isConversation]: 是否发送会话消息,默认false
     * @return 客户端生成的消息ID,返回null说明消息未进入发送队列
     */
    sendGroupMessage(topicId,payload,bizType,isStore,isConversation){
        const message={
            topicId,
            payload,
            bizType,
            isStore,
            isConversation
        }
        return new Promise((resolve, reject)=>{
            YmChat.sendGroupMessage(message,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    /**
     * 发送在线消息
     * @param[toAccount]: 消息接收方在APP账号系统内的唯一账号ID
     * @param[payload]: 开发者自定义消息体,最大不超过15KB
     * @param[isStore]: 消息是否存储在mimc服务端,true 存储, false 不存储, 默认存储
     * @param[bizType]: 消息类型,默认空字符串
     * @param[isConversation]: 是否发送会话消息,默认false
     * @return 客户端生成的消息ID,返回null说明消息未进入发送队列
     */
    sendOnlineMessage(toAccount,payload,bizType,isStore,isConversation){
        const message={
            toAccount,
            payload,
            bizType,
            isStore,
            isConversation
        }
        return new Promise((resolve, reject)=>{
            YmChat.sendOnlineMessage(message,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    //创建超大群//这里不返回群信息,会执行创建无限大群回调返回群信息
    /**
     * @param {String} topicName 群名称
     * @param {String} context 附件内容 回调返回原内容
     */
    createUnlimitedGroup(topicName,context){
        const params={
            topicName,
            context,
        }
        return new Promise((resolve, reject)=>{
            YmChat.createUnlimitedGroup(params,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    /**
     * 加入无限大群
     * @param {Object} topicId
     * @param {Object} context
     * @return packetId
     */
    joinUnlimitedGroup(topicId,context){
        const params={
            topicId,
            context,
        }
        return new Promise((resolve, reject)=>{
            YmChat.joinUnlimitedGroup(params,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    /**
     * 退出无限大群
     * @param {Object} topicId
     * @param {Object} context
     * @return packetId
     */
    quitUnlimitedGroup(topicId,context){
        const params={
            topicId,
            context,
        }
        return new Promise((resolve, reject)=>{
            YmChat.quitUnlimitedGroup(params,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    /**
     * 解散无限大群
     * @param {Object} topicId
     * @param {Object} context
     * @return void
     */
    dismissUnlimitedGroup(topicId,context){
        const params={
            topicId,
            context,
        }
        return new Promise((resolve, reject)=>{
            YmChat.dismissUnlimitedGroup(params,res=>{
                if(res.code==200){
                    resolve(res)
                }else{
                    reject(res)
                }
            })
        })
    },
    //拉取单聊消息历史
    pullHistoryMessage(toAccount,fromAccount,utcToTime,count){
        const url="https://mimc.chat.xiaomi.net/api/msg/p2p/queryOnCount/v2";
        return new Promise((resolve, reject)=>{
            let header={
                "Content-Type":"application/json",
                "appId":config.appId,
                "appKey":config.appKey,
                "appSecret":config.appSecret,
            };
            uni.request({
                url: url,
                data: {toAccount,fromAccount,utcToTime,count},
                header: header,
                method:"POST",
                success: (res) => {
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            });
        })
    },
    pullGroupHistoryMessage(account,utcToTime,count,topicId){

        const url="https://mimc.chat.xiaomi.net/api/msg/p2t/queryOnCount/v2";
        return new Promise((resolve, reject)=>{
            let header={
                "Content-Type":"application/json",
                "appId":config.appId,
                "appKey":config.appKey,
                "appSecret":config.appSecret,
            };
            //topicId=parseInt(topicId)
            var data={account,utcToTime,count,topicId}
            console.log(data)
            uni.request({
                url: url,
                data: data,
                header: header,
                method:"POST",
                success: (res) => {
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            });
        })
    },
    getContactList(token){
        //获取回话列表
        const url=`https://mimc.chat.xiaomi.net/api/contact/v2`
        let header={
            "Content-Type":"application/json",
            "token":token
        };
        return new Promise((resolve, reject)=>{
            uni.request({
                url: url,
                header: header,
                method:"GET",
                success: (res) => {
                    console.log(res)
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            })
        })
    },
    //创建普通群聊
    createGorup(token,appId,name,accounts){
        const url=`https://mimc.chat.xiaomi.net/api/topic/${appId}`
        let header={
            "Content-Type":"application/json",
            "token":token
        };
        let data={
            topicName:name,
            accounts:accounts
        }
        return new Promise((resolve, reject)=>{
            uni.request({
                url: url,
                header: header,
                method:"POST",
                data:data,
                success: (res) => {
                    resolve(res.data)
                },
                fail: (res) => {
                    reject(res)
                }
            })
        })
    }
}
export default ImSdk

文档地址

https://admin.mimc.chat.xiaomi.net/docs/

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的 小米即时消息云 SDK会采集数据,可参考:https://admin.mimc.chat.xiaomi.net/docs/和https://dev.mi.com/

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问