更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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
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()
},
//接收单聊消息
onMessage(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/