diff --git a/App.vue b/App.vue index a9918f2..47e716a 100644 --- a/App.vue +++ b/App.vue @@ -9,13 +9,9 @@ import { TUIChatKit } from './TUIKit' import { getIpBlack } from './api' - TUIChatKit.init() - // #ifdef APP-PLUS - uni.$TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit') - console.log(uni.$TUICallKit, 'TUICallKit | ok') // 本地日志 - // #endif + const { token, tencentUserSig } = useAuthUser() const { loginTencentIM } = useUserStore() @@ -39,7 +35,6 @@ } onLaunch((e: any) => { - // return console.log('App Launch111') silentLogin(e) diff --git a/TUIKit/components/TUIChat/message-input-toolbar/call-view/index.vue b/TUIKit/components/TUIChat/message-input-toolbar/call-view/index.vue index 6101ecb..a70ac4e 100644 --- a/TUIKit/components/TUIChat/message-input-toolbar/call-view/index.vue +++ b/TUIKit/components/TUIChat/message-input-toolbar/call-view/index.vue @@ -1,11 +1,14 @@ diff --git a/TUIKit/components/TUIChat/message-input-toolbar/call-view/style/index.scss b/TUIKit/components/TUIChat/message-input-toolbar/call-view/style/index.scss index e69de29..1d184b3 100644 --- a/TUIKit/components/TUIChat/message-input-toolbar/call-view/style/index.scss +++ b/TUIKit/components/TUIChat/message-input-toolbar/call-view/style/index.scss @@ -0,0 +1,13 @@ +.box-index { + height: 100vh; + background: #161616; + + .top-icon { + padding-top: var(--status-bar-height); + padding-left: 20rpx; + width: 100%; + display: flex; + align-items: center; + height: 100rpx; + } +} diff --git a/TUIKit/components/TUIChat/utils/sendMessage.ts b/TUIKit/components/TUIChat/utils/sendMessage.ts index 6495192..2868dcf 100644 --- a/TUIKit/components/TUIChat/utils/sendMessage.ts +++ b/TUIKit/components/TUIChat/utils/sendMessage.ts @@ -4,13 +4,15 @@ import TUIChatEngine, { StoreName, TUITranslateService, IConversationModel, - SendMessageParams, -} from '@tencentcloud/chat-uikit-engine-lite'; -import { Toast, TOAST_TYPE } from '../../common/Toast/index'; -import { isEnabledMessageReadReceiptGlobal } from '../utils/utils'; -import { ITipTapEditorContent } from '../../../interface'; -import { enableSampleTaskStatus } from '../../../utils/enableSampleTaskStatus'; -import OfflinePushInfoManager, { IOfflinePushInfoCreateParams } from '../offlinePushInfoManager/index'; + SendMessageParams +} from '@tencentcloud/chat-uikit-engine-lite' +import { Toast, TOAST_TYPE } from '../../common/Toast/index' +import { isEnabledMessageReadReceiptGlobal } from '../utils/utils' +import { ITipTapEditorContent } from '../../../interface' +import { enableSampleTaskStatus } from '../../../utils/enableSampleTaskStatus' +import OfflinePushInfoManager, { + IOfflinePushInfoCreateParams +} from '../offlinePushInfoManager/index' export const sendMessageErrorCodeMap: Map = new Map([ [3123, '文本包含本地审核拦截词'], @@ -21,26 +23,32 @@ export const sendMessageErrorCodeMap: Map = new Map([ [8001, '消息长度超出限制,消息长度不要超过12K'], [80001, '消息或者资料中文本存在敏感内容,发送失败'], [80004, '消息中图片存在敏感内容,发送失败'], - [10017, '您已被禁止聊天'], -]); + [10017, '您已被禁止聊天'] +]) -export const createOfflinePushInfo = (conversation: IConversationModel) => { - const androidInfo = {}; - const apnsInfo = {}; - const userInfo = TUIStore.getData(StoreName.USER, 'userProfile'); +export const createOfflinePushInfo = ( + conversation: IConversationModel +) => { + const androidInfo = {} + const apnsInfo = {} + const userInfo = TUIStore.getData(StoreName.USER, 'userProfile') const entity = { - sender: conversation.type === TUIChatEngine.TYPES.CONV_GROUP ? conversation.groupProfile?.groupID : userInfo.userID, + sender: + conversation.type === TUIChatEngine.TYPES.CONV_GROUP + ? conversation.groupProfile?.groupID + : userInfo.userID, nickName: userInfo.nick, - chatType: conversation.type === TUIChatEngine.TYPES.CONV_GROUP ? 2 : 1, + chatType: + conversation.type === TUIChatEngine.TYPES.CONV_GROUP ? 2 : 1, version: 1, - action: 1, - }; + action: 1 + } return { extension: JSON.stringify({ entity }), androidInfo, - apnsInfo, - }; -}; + apnsInfo + } +} /** * This function only processes five message types: Text/TextAt/Image/Video/File @@ -49,112 +57,143 @@ export const createOfflinePushInfo = (conversation: IConversationModel) => { */ export const sendMessages = async ( messageList: ITipTapEditorContent[], - currentConversation: IConversationModel, + currentConversation: IConversationModel ) => { // In case of messageJumping, the sent message is automatically cleared and returns to the bottom if (TUIStore.getData(StoreName.CHAT, 'messageSource')) { - TUIStore.update(StoreName.CHAT, 'messageSource', undefined); + TUIStore.update(StoreName.CHAT, 'messageSource', undefined) } messageList?.forEach(async (content: ITipTapEditorContent) => { try { const options: SendMessageParams = { - to: currentConversation?.groupProfile?.groupID || currentConversation?.userProfile?.userID, + to: + currentConversation?.groupProfile?.groupID || + currentConversation?.userProfile?.userID, conversationType: currentConversation?.type as any, payload: {}, - needReadReceipt: isEnabledMessageReadReceiptGlobal(), - }; + needReadReceipt: isEnabledMessageReadReceiptGlobal() + } // handle message typing - let textMessageContent; + let textMessageContent const sendMessageOptions = { - offlinePushInfo: {}, - }; + offlinePushInfo: {} + } const offlinePushInfoCreateParams: IOfflinePushInfoCreateParams = { conversation: currentConversation, payload: content.payload, - messageType: '', - }; + messageType: '' + } switch (content?.type) { case 'text': - textMessageContent = JSON.parse(JSON.stringify(content.payload?.text)); + textMessageContent = JSON.parse( + JSON.stringify(content.payload?.text) + ) // Do not send empty messages if (!textMessageContent) { - break; + break } options.payload = { - text: textMessageContent, - }; - offlinePushInfoCreateParams.messageType = TUIChatEngine.TYPES.MSG_TEXT; - sendMessageOptions.offlinePushInfo = OfflinePushInfoManager.create(offlinePushInfoCreateParams); + text: textMessageContent + } + offlinePushInfoCreateParams.messageType = + TUIChatEngine.TYPES.MSG_TEXT + sendMessageOptions.offlinePushInfo = + OfflinePushInfoManager.create(offlinePushInfoCreateParams) if (content.payload?.atUserList) { - options.payload.atUserList = content.payload.atUserList; - await TUIChatService.sendTextAtMessage(options, sendMessageOptions); + options.payload.atUserList = content.payload.atUserList + await TUIChatService.sendTextAtMessage( + options, + sendMessageOptions + ) } else { try { + console.log('发送成功') await TUIChatService.sendTextMessage(options, sendMessageOptions); } catch (err) { console.log('发送失败,对方不是你的好友') - } } - break; + break case 'image': options.payload = { - file: content.payload?.file, - }; - offlinePushInfoCreateParams.messageType = TUIChatEngine.TYPES.MSG_IMAGE; - sendMessageOptions.offlinePushInfo = OfflinePushInfoManager.create(offlinePushInfoCreateParams); - await TUIChatService.sendImageMessage(options, sendMessageOptions); - break; + file: content.payload?.file + } + offlinePushInfoCreateParams.messageType = + TUIChatEngine.TYPES.MSG_IMAGE + sendMessageOptions.offlinePushInfo = + OfflinePushInfoManager.create(offlinePushInfoCreateParams) + await TUIChatService.sendImageMessage( + options, + sendMessageOptions + ) + break case 'video': options.payload = { - file: content.payload?.file, - }; - offlinePushInfoCreateParams.messageType = TUIChatEngine.TYPES.MSG_VIDEO; - sendMessageOptions.offlinePushInfo = OfflinePushInfoManager.create(offlinePushInfoCreateParams); - await TUIChatService.sendVideoMessage(options, sendMessageOptions); - break; + file: content.payload?.file + } + offlinePushInfoCreateParams.messageType = + TUIChatEngine.TYPES.MSG_VIDEO + sendMessageOptions.offlinePushInfo = + OfflinePushInfoManager.create(offlinePushInfoCreateParams) + await TUIChatService.sendVideoMessage( + options, + sendMessageOptions + ) + break case 'file': options.payload = { - file: content.payload?.file, - }; - offlinePushInfoCreateParams.messageType = TUIChatEngine.TYPES.MSG_FILE; - sendMessageOptions.offlinePushInfo = OfflinePushInfoManager.create(offlinePushInfoCreateParams); - await TUIChatService.sendFileMessage(options, sendMessageOptions); - break; + file: content.payload?.file + } + offlinePushInfoCreateParams.messageType = + TUIChatEngine.TYPES.MSG_FILE + sendMessageOptions.offlinePushInfo = + OfflinePushInfoManager.create(offlinePushInfoCreateParams) + await TUIChatService.sendFileMessage( + options, + sendMessageOptions + ) + break default: - break; + break } - enableSampleTaskStatus('sendMessage'); + enableSampleTaskStatus('sendMessage') } catch (error: any) { Toast({ message: sendMessageErrorCodeMap.get(error?.code) - ? TUITranslateService.t(`TUIChat.${sendMessageErrorCodeMap.get(error.code) as string}`) + ? TUITranslateService.t( + `TUIChat.${ + sendMessageErrorCodeMap.get(error.code) as string + }` + ) : error?.message, - type: TOAST_TYPE.ERROR, - }); + type: TOAST_TYPE.ERROR + }) // If the message fails to be sent and the message is a reference message, clear the reference message information if (TUIStore.getData(StoreName.CHAT, 'quoteMessage')) { - TUIStore.update(StoreName.CHAT, 'quoteMessage', {}); + TUIStore.update(StoreName.CHAT, 'quoteMessage', {}) } } - }); -}; + }) +} export const handleMessageWithTyping = (cloudCustomData: any) => { if (!cloudCustomData) { - cloudCustomData = {}; + cloudCustomData = {} } cloudCustomData.messageFeature = { needTyping: 1, - version: 1, - }; - return cloudCustomData; -}; - -export const sendTyping = (inputContentEmpty: boolean, inputBlur: boolean) => { - if (!inputContentEmpty && !inputBlur) { - TUIChatService.enterTypingState(); - } else { - TUIChatService.leaveTypingState(); + version: 1 } -}; + return cloudCustomData +} + +export const sendTyping = ( + inputContentEmpty: boolean, + inputBlur: boolean +) => { + if (!inputContentEmpty && !inputBlur) { + TUIChatService.enterTypingState() + } else { + TUIChatService.leaveTypingState() + } +} diff --git a/manifest.json b/manifest.json index b3e2080..9892f89 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name" : "密谈IM", - "appid" : "__UNI__11F1948", + "appid" : "__UNI__D40A151", "description" : "", "versionName" : "1.1.2", "versionCode" : 111, @@ -37,6 +37,7 @@ /* android打包配置 */ "android" : { "permissions" : [ + "", "", "", "", @@ -110,7 +111,36 @@ } } }, - "nativePlugins" : {} + "nativePlugins" : { + "RongCloud-Call" : { + "__plugin_info__" : { + "name" : "RCUniCall", + "description" : "融云实时音视频 SDK uni 原生插件", + "platforms" : "Android,iOS", + "url" : "https://ext.dcloud.net.cn/plugin?id=6372", + "android_package_name" : "", + "ios_bundle_id" : "", + "isCloud" : true, + "bought" : 1, + "pid" : "6372", + "parameters" : {} + } + }, + "RongCloud-IM-V2" : { + "__plugin_info__" : { + "name" : "RCUniIMV2", + "description" : "融云即时通讯 SDK uni 原生插件V2", + "platforms" : "Android,iOS", + "url" : "https://ext.dcloud.net.cn/plugin?id=9227", + "android_package_name" : "", + "ios_bundle_id" : "", + "isCloud" : true, + "bought" : 1, + "pid" : "9227", + "parameters" : {} + } + } + } }, "h5" : { "optimization" : { diff --git a/stores/user.js b/stores/user.js index 51f47e0..39976a7 100644 --- a/stores/user.js +++ b/stores/user.js @@ -11,8 +11,10 @@ import { setFontSize, removeFontSize } from '@/utils/storage' + // #ifdef APP-PLUS import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState' +import RCIMIWEngine from '@/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine' // #endif // #ifdef H5 import { useLoginState } from 'tuikit-atomicx-vue3' @@ -27,6 +29,7 @@ import { TUILogin } from '@tencentcloud/tui-core-lite' import { TUIChatEngine } from '@tencentcloud/chat-uikit-engine-lite' import { getUserIntegral } from '@/api/my-index' import { removeFriendList, removeGroupList } from '../utils/storage' +import { getRongYunLoginInfo } from '../api' export const useUserStore = defineStore('user', () => { const { clearToken } = useTokenStore() @@ -71,10 +74,15 @@ export const useUserStore = defineStore('user', () => { */ const setUserInfo = async data => { const res = await getTencentUserSig() - tencentUserSig.value = res.data + const ryData = await getRongYunLoginInfo() + const IM_DATA = { + ...res.data, + ...ryData.data + } + tencentUserSig.value = IM_DATA userInfo.value = data setUserInfoData(data) - setSig(res.data) + setSig(IM_DATA) } /** 获取用户积分 */ @@ -115,19 +123,18 @@ export const useUserStore = defineStore('user', () => { userID: tencentUserSig.value.userId, userSig: tencentUserSig.value.userSig }) - uni.$TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit') - - console.log(uni.$TUICallKit, "TUICallKit | ok"); // 本地日志 - // try { - // await uni.$TUICallKit.login({ - // SDKAppID: tencentUserSig.value.sdkappID, - // userID: tencentUserSig.value.userId, - // userSig: tencentUserSig.value.userSig - // }) - // } catch (err) { - // console.log(err, '===========2222222222') - // } - + console.log(tencentUserSig.value.appKey, '====') + await RCIMIWEngine.create(tencentUserSig.value.appKey, { + kickReconnectDevice: true, + logLevel: 'debug' + }).then( + res => { + //本地代码保存引擎 + console.log(res, '====') + } + ).catch(err => { + console.log(err, '====') + }) // #endif } @@ -148,7 +155,7 @@ export const useUserStore = defineStore('user', () => { if (!userInfo.value) return try { userInfo.value = null - + await userLogout() await TUILogin.logout() await TUIChatEngine.logout() diff --git a/uni_modules/RongCloud-CallWrapper/changelog.md b/uni_modules/RongCloud-CallWrapper/changelog.md new file mode 100644 index 0000000..638cb61 --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/changelog.md @@ -0,0 +1,30 @@ +## 5.30.0(2025-12-22) +配合 RCUniCall 升级至 5.30.0 版本。 +## 5.8.2(2024-08-16) +完善接口的注释和变量类型 +## 5.6.4(2023-12-15) +补全接口参数类型 +## 5.4.5-2(2023-08-04) +新增 setPushConfig 接口 +## 5.4.0(2023-05-08) +适配融云 Call SDK 5.4.0 +## 5.1.17-5(2022-07-12) +优化代码结构 +## 5.1.17-4(2022-07-11) +新增网络监测回调 +## 5.1.17-3(2022-07-04) +新增音频和视频配置接口 +## 5.1.17-1(2022-04-22) +迁移美颜相关接口到 RongCloud-BeautyWrapper 中 +## 5.1.15(2022-01-10) +* 更新 SDK +## 1.0.4(2022-01-06) +* 修复初始化问题 +## 1.0.3(2022-01-06) +* 更新插件内容 +## 1.0.2(2022-01-06) +* 添加枚举值 +## 1.0.1(2022-01-05) +* 更新目录结构 +## 1.0.0(2022-01-05) +* 支持 Calllib JS 层 diff --git a/uni_modules/RongCloud-CallWrapper/lib/index.d.ts b/uni_modules/RongCloud-CallWrapper/lib/index.d.ts new file mode 100644 index 0000000..95887d1 --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/lib/index.d.ts @@ -0,0 +1,957 @@ +/* + * RCCallUni - v5.30.0 + * CommitId - cf4b2f0ffe2ae11c39bbfc216890745f254753c9 + * Tue Dec 02 2025 16:50:41 GMT+0800 (China Standard Time) + * ©2020 RongCloud, Inc. All rights reserved. + */ +/** + * 摄像头类型 + */ +declare enum RCCallIWCamera { + NONE = 0, + /** + * 前置摄像头 + */ + FRONT = 1, + /** + * 后置摄像头 + */ + BACK = 2 +} +/** + * 通话媒体类型 + */ +declare enum RCCallIWMediaType { + /** + * 音频通话 + */ + AUDIO = 0, + /** + * 视频通话 + */ + AUDIO_VIDEO = 1 +} +declare enum RCUNICallErrorCode { + SUCCESS = 0, + ENGINE_NOT_FOUND = 1, + NETWORK_UNAVAILABLE = 2, + ONE_CALL_EXISTED = 3, + OPERATION_UNAVAILABLE = 4, + INVALID_PARAM = 5, + NETWORK_UNSTABLE = 6, + MEDIA_REQUEST_FAILED = 7, + MEDIA_SERVER_NOT_READY = 8, + MEDIA_SERVER_NOT_INITIALIZED = 9, + MEDIA_REQUEST_TIMEOUT = 10, + MEDIA_UNKOWN_ERROR = 11, + MEDIA_KICKED_BY_SERVER_ERROR = 12, + MEDIA_SERVER_CLOSED_ERROR = 13, + MEDIA_SERVER_PUBLISH_ERROR = 14, + MEDIA_SERVER_SUBSCRIBE_ERROR = 15, + MEDIA_JOIN_ROOM_REFUSE_ERROR = 16 +} +declare enum RCCallIWCallDisconnectedReason { + CANCEL = 0, + REJECT = 1, + HANGUP = 2, + BUSY_LINE = 3, + NO_RESPONSE = 4, + ENGINE_UNSUPPORTED = 5, + NETWORK_ERROR = 6, + RESOURCE_GET_ERROR = 7, + RESOURCE_PUBLISH_ERROR = 8, + RESOURCE_SUBSCRIBE_ERROR = 9, + REMOTE_CANCEL = 10, + REMOTE_REJECT = 11, + REMOTE_HANGUP = 12, + REMOTE_BUSY_LINE = 13, + REMOTE_NO_RESPONSE = 14, + REMOTE_ENGINE_UNSUPPORTED = 15, + REMOTE_NETWORK_ERROR = 16, + REMOTE_RESOURCE_GET_ERROR = 17, + REMOTE_RESOURCE_PUBLISH_ERROR = 18, + REMOTE_RESOURCE_SUBSCRIBE_ERROR = 19, + KICKED_BY_OTHER_CALL = 20, + IN_OTHER_CALL = 21, + KICKED_BY_SERVER = 22, + REMOTE_KICKED_BY_OTHER_CALL = 23, + REMOTE_IN_OTHER_CALL = 24, + REMOTE_KICKED_BY_SERVER = 25, + ACCEPT_BY_OTHER_CLIENT = 26, + HANGUP_BY_OTHER_CLIENT = 27, + REJECTED_BY_BLACKLIST = 28, + SERVICE_NOT_OPENED = 29, + DROP_TO_OBSERVER = 30, + INIT_VIDEO_ERROR = 31, + OTHER_DEVICE_HAD_ACCEPTED = 32, + SERVICE_DISCONNECTED = 33 +} +/** + * 音频编译类型 + */ +declare enum RCCallIWAudioCodecType { + PCMU = 0, + OPUS = 111 +} +/** + * 音源类型 + */ +declare enum RCCallIWAudioSource { + /** + * 默认音频源 + */ + DEFAULT = 0, + /** + * 麦克风 + */ + MIC = 1, + /** + * 语音呼叫上行音频源 + */ + VOICE_UPLINK = 2, + /** + * 语音呼叫下行音频源 + */ + VOICE_DOWNLINK = 3, + /** + * 语音呼叫音频源 + */ + VOICE_CALL = 4, + /** + * 同方向的相机麦克风,若相机无内置相机或无法识别,则使用预设的麦克风 + */ + CAMCORDER = 5, + /** + * 进过语音识别后的麦克风音频源 + */ + VOICE_RECOGNITION = 6, + /** + * 针对VoIP调整后的麦克风音频源 + */ + VOICE_COMMUNICATION = 7 +} +/*! + 通话视频参数 + */ +declare enum RCCallIWVideoProfile { + /** + * 144x256, 15fps, 120~240kbps + */ + PROFILE_144_256 = 0, + /** + * 240x240, 15fps, 120~280kbps + */ + PROFILE_240_240 = 1, + /** + * 240x320, 15fps, 120~400kbps + */ + PROFILE_240_320 = 2, + /** + * 360x480, 15fps, 150~650kbps + */ + PROFILE_360_480 = 3, + /** + * 360x640, 15fps, 180~800kbps + */ + PROFILE_360_640 = 4, + /** + * 480x640, 15fps, 200~900kbps + */ + PROFILE_480_640 = 5, + /** + * 480x720, 15fps, 200~1000kbps + */ + PROFILE_480_720 = 6, + /** + * 720x1280, 15fps, 250~2200kbps + */ + PROFILE_720_1280 = 7, + /** + * 1080x1920, 15fps, 400~4000kbps + */ + PROFILE_1080_1920 = 8, + /** + * 144x256, 30fps, 240~480kbps + */ + PROFILE_144_256_HIGH = 9, + /** + * 240x240, 30fps, 240~360kbps + */ + PROFILE_240_240_HIGH = 10, + /** + * 240x320, 30fps, 240~800kbps + */ + PROFILE_240_320_HIGH = 11, + /** + * 360x480, 30fps, 300~1300kbps + */ + PROFILE_360_480_HIGH = 12, + /** + * 360x640, 30fps, 360~1600kbps + */ + PROFILE_360_640_HIGH = 13, + /** + * 480x640, 30fps, 400~1800kbps + */ + PROFILE_480_640_HIGH = 14, + /** + * 480x720, 30fps, 400~2000kbps + */ + PROFILE_480_720_HIGH = 15, + /** + * 720x1080, 30fps, 500~4400kbps + */ + PROFILE_720_1280_HIGH = 16, + /** + * 1080x1920, 30fps, 800~8000kbps + */ + PROFILE_1080_1920_HIGH = 17 +} +/** + * 摄像头方向 + */ +declare enum RCCallIWCameraOrientation { + /** + * home 键在下 + */ + PORTRAIT = 0, + /** + * home 键在上 + */ + PORTRAIT_UPSIDE_DOWN = 1, + /** + * home 键在右 + */ + LANDSCAPE_RIGHT = 2, + /** + * home 键在左 + */ + LANDSCAPE_LEFT = 3 +} +declare enum RCCallIWVideoBitrateMode { + CQ = 0, + VBR = 1, + CBR = 2 +} +declare enum RCCallIWNetworkQuality { + UNKNOWN = 0, + EXCELLENT = 1, + GOOD = 2, + POOR = 3, + BAD = 4, + TERRIBLE = 5 +} +/** + * 华为推送级别 + */ +declare enum RCCallIWImportanceHW { + NORMAL = 0, + LOW = 1 +} +/** + * 通话类型 + */ +declare enum RCCallIWCallType { + /** + * 单聊 + */ + SINGLE = 0, + /** + * 群聊 + */ + GROUP = 1 +} +/** + * 用户身份类型 + */ +declare enum RCCallIWUserType { + /** + * 普通身份 + */ + NORMAL = 0, + /** + * 观察者身份 + */ + OBSERVER = 1 +} + +interface UniListenerResult { + module: string; + type: string; + data: T; +} +interface ListenerNullData { +} +interface ListenerOnCallDisconnectedData { + /** + * 通话挂断原因 + */ + reason?: RCCallIWCallDisconnectedReason; +} +interface ListenerResultError { + reason?: RCUNICallErrorCode; +} +interface ListenerNetworkQualityData { + /** + * 用户信息 + */ + user?: RCCallIWUserProfile; + /** + * 网络质量 + */ + quality: RCCallIWNetworkQuality; +} +interface ListenerOnSwitchCameraData { + /** + * 摄像头类型 + */ + camera: RCCallIWCamera; +} +interface ListenerOnEnableCameraData { + /** + * 摄像头类型 + */ + camera: RCCallIWCamera; + /** + * 打开状态 + */ + enable: boolean; +} +interface ListenerOnRemoteUserInvitedData { + /** + * 用户 id + */ + userId: string; + /** + * 媒体类型 + */ + mediaType: RCCallIWMediaType; +} +interface ListenerOnRemoteUserLeftData { + /** + * 用户 id + */ + userId: string; + /** + * 原因 + */ + reason: RCCallIWCallDisconnectedReason; +} +interface ListenerOnRemoteUserRingingData { + /** + * 用户 id + */ + userId: string; +} +interface ListenerOnRemoteUserMediaTypeChangedData { + /** + * 用户信息 + */ + user: RCCallIWUserProfile; + /** + * 媒体类型 + */ + mediaType: RCCallIWMediaType; +} +interface ListenerOnRemoteUserCameraStateChangedData { + /** + * 用户信息 + */ + user: RCCallIWUserProfile; + /** + * 摄像头是否打开 + */ + enable: boolean; +} +interface ListenerOnRemoteUserMicrophoneStateChangedData { + /** + * 用户信息 + */ + user: RCCallIWUserProfile; + /** + * 麦克风是否打开 + */ + enable: boolean; +} +interface RCCallIWAudioConfig { + /** + * 是否禁用麦克风 + * 仅 Android 平台生效 + */ + enableMicrophone?: boolean; + /** + * 音频是否支持立体声 + * 仅 Android 平台生效 + */ + enableStereo?: boolean; + /** + * 音源类型 + */ + audioSource?: RCCallIWAudioSource; + /** + * 音频比特率 + */ + audioBitrate?: number; + /** + * 音频采样率 + * 8000, 16000, 32000, 44100, 48000 + * 仅 Android 平台生效 + */ + audioSampleRate?: number; + /** + * 音频编译类型 + * 0: PCMU , 111: OPUS; + * 仅 Android 平台生效 + */ + type?: RCCallIWAudioCodecType; +} +/** + * 视频配置 + */ +interface RCCallIWVideoConfig { + /** + * 通话视频参数 + */ + profile?: RCCallIWVideoProfile; + /** + * 默认打开的摄像头 + */ + defaultCamera?: RCCallIWCamera; + /** + * 摄像头方向 + */ + cameraOrientation?: RCCallIWCameraOrientation; + /** + * 本地摄像头采集是否镜像 + * 前置摄像头默认: YES,后置摄像头默认: NO + */ + isPreviewMirror?: boolean; + /** + * 是否采用硬解码 + * 仅 Android 生效 + */ + enableHardwareDecoder?: boolean; + /** + * + * 仅 Android 生效 + */ + hardwareDecoderColor?: number; + /** + * 设备是否采用硬编码 + * 仅 Android 生效 + */ + enableHardwareEncoder?: boolean; + /** + * 设置硬编码压缩等级是否为 MediaCodecInfo.CodecProfileLevel.AVCProfileHigh + * 仅 Android 生效 + */ + enableHardwareEncoderHighProfile?: boolean; + /** + * 设置硬解码颜色空间 该值必须是本设备H264解码器所支持的值,可以通过 获取本机所支持的编解码器、颜色空间信息 + * 仅 Android 生效 + */ + hardWareEncoderColor?: number; + /** + * 设置系统硬编码器的编码帧率 + * 仅 Android 生效 + */ + hardwareEncoderFrameRate?: number; + /** + * 设置硬编码码率控制模式 仅 Android 系统 5.0 及以上版本设置有效 + * 仅 Android 生效 + */ + hardwareEncoderBitrateMode?: RCCallIWVideoBitrateMode; +} +interface RCCallIWPushConfig { + /** + * 是否屏蔽通知标题 + * YES: 不显示通知标题 + * NO: 显示通知标题 + * + * @discussion 默认情况下融云单聊消息通知标题为用户名、群聊消息为群名称,设置后不会再显示通知标题。 + * @discussion 此属性只针目标用户为 iOS 平台时有效,Android 第三方推送平台的通知标题为必填项,所以暂不支持。 + */ + disableTitle: boolean; + /** + * 推送标题 + * 如果没有设置,会使用下面的默认标题显示规则 + * 默认标题显示规则: + * 内置消息:单聊通知标题显示为发送者名称,群聊通知标题显示为群名称。 + * 自定义消息:默认不显示标题。 + */ + title?: string; + /** + * 推送内容 + * 优先使用 MessagePushConfig 的 pushContent,如果没有,则使用 sendMessage 或者 sendMediaMessage 的 pushContent。 + */ + content?: string; + /** + * 远程推送附加信息 + * 优先使用 MessagePushConfig 的 pushData,如果没有,则使用 sendMessage 或者 sendMediaMessage 的 pushData。 + */ + data?: string; + /** + * 是否强制显示通知详情 + * 当目标用户通过 RCPushProfile 中的 updateShowPushContentStatus 设置推送不显示消息详情时,可通过此参数,强制设置该条消息显示推送详情。 + */ + forceShowDetailContent?: boolean; + /** + * 推送模板 ID,设置后根据目标用户通过 SDK RCPushProfile 中的 setPushLauguageCode 设置的语言环境,匹配模板中设置的语言内容进行推送,未匹配成功时使用默认内容进行推送,模板内容在“开发者后台-自定义推送文案”中进行设置。 + * 注:RCMessagePushConfig 中的 Title 和 PushContent 优先级高于模板 ID(templateId)中对应的标题和推送内容。 + */ + templateId?: string; + /** + * iOS 平台相关配置 + */ + iOSConfig?: RCCallIWIOSPushConfig; + /** + * Android 平台相关配置 + */ + androidConfig?: RCCallIWAndroidPushConfig; +} +interface RCCallIWAndroidPushConfig { + /** + * Android 平台 Push 唯一标识 + * 目前支持小米、华为推送平台,默认开发者不需要进行设置,当消息产生推送时,消息的 messageUId 作为 notificationId 使用。 + */ + notificationId?: string; + /** + * 小米的渠道 ID + * 该条消息针对小米使用的推送渠道,如开发者集成了小米推送,需要指定 channelId 时,可向 Android 端研发人员获取,channelId 由开发者自行创建。 + */ + channelIdMi?: string; + /** + * 小米 Large icon 链接 + * Large icon 可以出现在大图版和多字版消息中,显示在右边。国内版仅 MIUI12 以上版本支持,以下版本均不支持;国际版支持。图片要求:大小 120 * 120px,格式为 png 或者 jpg 格式。 + */ + imageUrlMi?: string; + /** + * 华为的渠道 ID + * 该条消息针对华为使用的推送渠道,如开发者集成了华为推送,需要指定 channelId 时,可向 Android 端研发人员获取,channelId 由开发者自行创建。 + */ + channelIdHW?: string; + /** + * 华为通知栏消息右侧大图标 URL + * 如果不设置,则不展示通知栏右侧图标,URL 使用的协议必须是 HTTPS 协议。 + * 图标文件须小于 512KB,图标建议规格大小:40dp x 40dp,弧角大小为 8dp,超出建议规格大小的图标会存在图片压缩或显示不全的情况。 + */ + imageUrlHW?: string; + /** + * 华为推送消息级别 + */ + importanceHW?: RCCallIWImportanceHW; + /** + * 华为推送消息分类 + * 社交通讯:即时通讯[IM],音频、视频通话[VOIP] + * 服务提醒:订阅[SUBSCRIPTION],出行[TRAVEL],健康[HEALTH],工作事项提醒[WORK],帐号动态[ACCOUNT],订单&物流[EXPRESS],财务[FINANCE],系统提示[SYSTEM_REMINDER],邮件[MAIL] + * 资讯营销类:内容资讯/新闻/财经动态/生活资讯/社交动态/调研/其他[MARKETING] + * 营销活动:产品促销/功能推荐/运营活动/MARKETING + * 更多信息请参考华为消息分类标准文档: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/message-classification-0000001149358835 + */ + categoryHW?: string; + /** + * OPPO 的渠道 ID + * 该条消息针对 OPPO 使用的推送渠道,如开发者集成了 OPPO 推送,需要指定 channelId 时,可向 Android 端研发人员获取,channelId 由开发者自行创建。 + */ + channelIdOPPO?: string; + /** + * Vivo 推送通道类型 + * 开发者集成了 VIVO 推送,需要指定推送类型时,可进行设置。 + * 目前可选值 "0"(运营消息) 和 "1"(系统消息) + */ + typeVivo?: string; + /** + * Vivo 推送消息分类 + * 系统消息分类 + * 即时消息[IM],账号与资产[ACCOUNT],日程待办[TODO],设备信息[DEVICE_REMINDER],订单与物流[ORDER],订阅提醒[SUBSCRIPTION] + * 运营消息分类 + * 新闻[NEWS],内容推荐[CONTENT],运营活动[MARKETING],社交动态[SOCIAL] + * 更多信息请参考 Vivo 消息分类标准文档: https://dev.vivo.com.cn/documentCenter/doc/359 + */ + categoryVivo?: string; + /** + * FCM 通知类型推送时所使用的分组 id + */ + collapseKeyFCM?: string; + /** + * FCM 通知类型的推送所使用的通知图片 url + */ + imageUrlFCM?: string; + /** + * FCM 通知的频道 ID + * 该应用程序必须使用此频道 ID 创建一个频道,然后才能收到带有该频道 ID 的任何通知。 + * 如果您未在请求中发送此频道 ID,或者如果应用尚未创建提供的频道 ID,则 FCM 使用应用清单中指定的频道 ID。 + */ + channelIdFCM?: string; +} +interface RCCallIWIOSPushConfig { + /** + * iOS 平台通知栏分组 ID + * 相同的 thread-id 推送分为一组 + * iOS10 开始支持 + */ + threadId?: string; + /** + * iOS 标识推送的类型 + * 如果不设置后台默认取消息类型字符串,如 RC:TxtMsg + */ + category?: string; + /** + * iOS 平台通知覆盖 ID + * apnsCollapseId 相同时,新收到的通知会覆盖老的通知,最大 64 字节 + * iOS10 开始支持 + */ + apnsCollapseId?: string; + /** + * iOS 富文本推送内容 + */ + richMediaUri?: string; +} +/** + * 用户信息 + */ +interface RCCallIWUserProfile { + /** + * 用户身份类型 + */ + userType: RCCallIWUserType; + /** + * 通话媒体类型 + */ + mediaType: RCCallIWMediaType; + /** + * 用户id + */ + userId: string; + /** + * 用户的通话媒体连接 ID + */ + mediaId: string; + /** + * 用户是否开启摄像头 + */ + enableCamera: boolean; + /** + * 用户是否开启麦克风 + */ + enableMicrophone: boolean; +} +/** + * 当前通话的会话信息 + */ +interface RCCallIWCallSession { + /** + * 当前通话类型:单聊还是群聊 + */ + callType: RCCallIWCallType; + /** + * 通话媒体类型:音频还是视频 + */ + mediaType: RCCallIWMediaType; + /** + * 通话 ID + */ + callId: string; + /** + * RTC 会话唯一标识, 用于 Server API + */ + sessionId: string; + /** + * 通话目标 id + */ + targetId: string; + /** + * 通话开始时间 + */ + startTime: number; + /** + * 通话接通时间 + */ + connectedTime: number; + /** + * 通话结束时间 + */ + endTime: number; + /** + * 通话发起人 + */ + caller: RCCallIWUserProfile; + /** + * 邀请当前用户到当前通话的邀请者 + */ + inviter: RCCallIWUserProfile; + /** + * 当前用户 + */ + mine: RCCallIWUserProfile; + /** + * 当前通话所有用户 + */ + users: RCCallIWUserProfile[]; + /** + * 当前通话携带的扩展信息 + */ + extra: string; +} + +/** +* 初始化 SDK,只需要调用一次 +* +* calllib初始化默认不传参数 +*/ +declare function init(): void; +/** +* 注销calllib +* +* 注销calllib默认不传参数 +*/ +declare function unInit(): void; +/** +* 添加通话呼入监听函数 +* +* @param listener 回调函数 +*/ +declare function onCallReceived(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-接收到通话呼入 + */ +declare function removeCallReceivedListener(): void; +/** +* 添加连接监听函数 +* +* @param listener 回调函数 +*/ +declare function onCallConnected(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-通话已接通 + */ +declare function removeCallConnectedListener(): void; +/** +* 添加挂断监听函数 +* +* @param listener 回调函数 +*/ +declare function onCallDisconnected(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-通话已结束 + * @param 挂断原因 + */ +declare function removeCallDisconnectedListener(): void; +/** +* 通话中的某一个参与者,邀请好友加入通话 +* +* @param listener 回调函数 +*/ +declare function onRemoteUserInvited(listener: (result: UniListenerResult) => void): void; +/** +* 移除监听-有用户被邀请加入通话 +*/ +declare function removeRemoteUserInvited(): void; +/** + * 对端用户加入了通话 + * @param listener 回调函数 + */ +declare function onRemoteUserJoined(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-对端用户加入了通话 + */ +declare function removeRemoteUserJoinedListener(): void; +/** + * 远端用户离开 (只在群聊时用触发) + * @param listener 回调函数 + */ +declare function onRemoteUserLeft(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-远端用户离开 + */ +declare function removeRemoteUserLeftListener(): void; +/** + * 电话已拨出 主叫端拨出电话后,通过回调 onCallOutgoing 通知当前 call 的详细信息 + * @param listener 回调函数 + */ +declare function onCallOutgoing(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-开始呼叫通话的回调 + */ +declare function removeCallOutgoingListener(): void; +/** + * 被叫端正在振铃,主叫端拨出电话,被叫端收到请求,发出振铃响应时监听 + * @param listener 回调函数 + */ +declare function onRemoteUserRinging(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-对端用户正在振铃 + */ +declare function removeRemoteUserRingingListener(): void; +/** + * 通话出现错误的回调 + * @param listener 回调函数 + */ +declare function onError(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-通话出现错误的回调 + */ +declare function removeErrorListener(): void; +/** + * 对端用户切换了媒体类型 + * @param listener 回调函数 + */ +declare function onRemoteUserMediaTypeChanged(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-对端用户切换了媒体类型 + */ +declare function removeRemoteUserMediaTypeChangedListener(): void; +/** + * 对端用户开关摄像头 + * @param listener 回调函数 + */ +declare function onRemoteUserCameraStateChanged(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听- 远端摄像头状态变更 + */ +declare function removeRemoteUserCameraStateChangedListener(): void; +/** + * 对端用户开关麦克风 + * @param listener 回调函数 + */ +declare function onRemoteUserMicrophoneStateChanged(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听- 远端麦克风状态变更 + */ +declare function removeRemoteUserMicrophoneStateChangedListener(): void; +/** + * 网络状态监测, 通话建立成功后才会有回调 + * @param listener + */ +declare function onNetworkQuality(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听 - 网络状态监测 + */ +declare function removeNetworkQualityListener(): void; +/** + * 开启或关闭摄像头的回调 + */ +declare function onEnableCamera(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-开启或关闭摄像头的回调 + */ +declare function removeEnableCameraListener(): void; +/** + * 切换摄像头回调 + */ +declare function onSwitchCamera(listener: (result: UniListenerResult) => void): void; +/** + * 移除监听-切换摄像头回调 + */ +declare function removeSwitchCameraListener(): void; +/** +* 获取当前calllib本地存储信息 +* +* 默认不传参数 +*/ +declare function getCurrentCallSession(): RCCallIWCallSession; +/** +* 挂断calllib +* +* 默认不传参数 +*/ +declare function hangup(): void; +/** +* 接收calllib +* +* 默认不传参数 +*/ +declare function accept(): void; +/** +* 发起单聊呼叫 +* +* @param targetId 目标ID +* @param type 呼叫类型(0:音频 1:音视频) +* @param extra 默认传'' +* +*/ +declare function startSingleCall(targetId: string, type: number, extra: null): void; +/** +* 发起组呼呼叫 +* +* @param groupId 组ID +* @param userIds 群组成员 +* @param observerUserIds 观察者ID默认为空数组 +* @param type 呼叫类型(0:音频 1:音视频) +* @param extra 默认传'' +* +*/ +declare function startGroupCall(groupId: string, userIds: Array, observerUserIds: Array, type: number, extra: string): void; +/** + * 邀请用户 + * @param userIds 被邀请用户id列表 + * @param observerUserIds 被邀请观察者id列表 (只能听或看,不能推流的用户) + */ +declare function inviteUsers(userIds: string[], observerUserIds: string[]): void; +/** +* 设置预览窗口,此方法需要在视图更新渲染完成后执行 +* +* @param userId 用户id +* @param ref ref ID 对应组件的标识 +* @param type 视频显示模式 0 铺满 1 自适应 +* @param isZOrderOnTop android only 是否置顶 +*/ +declare function setVideoView(userId: string, ref: string, type: number, isZOrderOnTop?: boolean): void; +/** +* 设置callib是否开启扬声器 +* +* @param isOpen 默认开启 +* +*/ +declare function enableSpeaker(isOpen: boolean): void; +/** +* 设置callib是否开启麦克风 +* +* @param isOPen 默认开启 +* +*/ +declare function enableMicrophone(isOpen: boolean): void; +/** +* 切换摄像头 +* +* 默认不传参数 +* +*/ +declare function switchCamera(): void; +/** +* 获取当前摄像头方式 +* +* 默认不传参数 +*/ +declare function currentCamera(): any; +/** +* 开启摄像头摄像头 +* +* @param isOpen 是否开启 +* @param RCCallIWCamera 对端还是本端 +* +*/ +declare function enableCamera(isOpen: boolean, camera: RCCallIWCamera): void; +/** + * 修改通话类型 + * @param type + */ +declare function changeMediaType(type: RCCallIWMediaType): void; +/** + * 音频配置 + * @param config + */ +declare function setAudioConfig(config: RCCallIWAudioConfig): void; +/** + * 视频配置 + * @param config + */ +declare function setVideoConfig(config: RCCallIWVideoConfig): void; +/** + * 通话提醒消息推送配置(可在拨打电话前设置) + * @param config 呼叫推送配置 + * @param hangupPushConfig 挂断推送配置 + */ +declare function setPushConfig(config: RCCallIWPushConfig, hangupPushConfig: RCCallIWPushConfig): void; + +export { RCCallIWAudioCodecType, RCCallIWAudioSource, RCCallIWCallDisconnectedReason, RCCallIWCallType, RCCallIWCamera, RCCallIWCameraOrientation, RCCallIWImportanceHW, RCCallIWMediaType, RCCallIWNetworkQuality, RCCallIWUserType, RCCallIWVideoBitrateMode, RCCallIWVideoProfile, RCUNICallErrorCode, accept, changeMediaType, currentCamera, enableCamera, enableMicrophone, enableSpeaker, getCurrentCallSession, hangup, init, inviteUsers, onCallConnected, onCallDisconnected, onCallOutgoing, onCallReceived, onEnableCamera, onError, onNetworkQuality, onRemoteUserCameraStateChanged, onRemoteUserInvited, onRemoteUserJoined, onRemoteUserLeft, onRemoteUserMediaTypeChanged, onRemoteUserMicrophoneStateChanged, onRemoteUserRinging, onSwitchCamera, removeCallConnectedListener, removeCallDisconnectedListener, removeCallOutgoingListener, removeCallReceivedListener, removeEnableCameraListener, removeErrorListener, removeNetworkQualityListener, removeRemoteUserCameraStateChangedListener, removeRemoteUserInvited, removeRemoteUserJoinedListener, removeRemoteUserLeftListener, removeRemoteUserMediaTypeChangedListener, removeRemoteUserMicrophoneStateChangedListener, removeRemoteUserRingingListener, removeSwitchCameraListener, setAudioConfig, setPushConfig, setVideoConfig, setVideoView, startGroupCall, startSingleCall, switchCamera, unInit }; diff --git a/uni_modules/RongCloud-CallWrapper/lib/index.esm.js b/uni_modules/RongCloud-CallWrapper/lib/index.esm.js new file mode 100644 index 0000000..65075e7 --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/lib/index.esm.js @@ -0,0 +1,383 @@ +/* + * RCCallUni - v5.30.0 + * CommitId - cf4b2f0ffe2ae11c39bbfc216890745f254753c9 + * Tue Dec 02 2025 16:50:41 GMT+0800 (China Standard Time) + * ©2020 RongCloud, Inc. All rights reserved. + */ +class Logger { + tag; + + constructor(tag) { + this.tag = tag; + } + + log(str) { + console.log(`[${this.tag}] ${new Date().toISOString()} ${str}`); + } + +} +const logger = new Logger('RCUNICallLib'); + +var RCCallIWCamera; + +(function (RCCallIWCamera) { + RCCallIWCamera[RCCallIWCamera["NONE"] = 0] = "NONE"; + RCCallIWCamera[RCCallIWCamera["FRONT"] = 1] = "FRONT"; + RCCallIWCamera[RCCallIWCamera["BACK"] = 2] = "BACK"; +})(RCCallIWCamera || (RCCallIWCamera = {})); + +var RCCallIWMediaType; + +(function (RCCallIWMediaType) { + RCCallIWMediaType[RCCallIWMediaType["AUDIO"] = 0] = "AUDIO"; + RCCallIWMediaType[RCCallIWMediaType["AUDIO_VIDEO"] = 1] = "AUDIO_VIDEO"; +})(RCCallIWMediaType || (RCCallIWMediaType = {})); + +var RCUNICallErrorCode; + +(function (RCUNICallErrorCode) { + RCUNICallErrorCode[RCUNICallErrorCode["SUCCESS"] = 0] = "SUCCESS"; + RCUNICallErrorCode[RCUNICallErrorCode["ENGINE_NOT_FOUND"] = 1] = "ENGINE_NOT_FOUND"; + RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNAVAILABLE"] = 2] = "NETWORK_UNAVAILABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["ONE_CALL_EXISTED"] = 3] = "ONE_CALL_EXISTED"; + RCUNICallErrorCode[RCUNICallErrorCode["OPERATION_UNAVAILABLE"] = 4] = "OPERATION_UNAVAILABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["INVALID_PARAM"] = 5] = "INVALID_PARAM"; + RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNSTABLE"] = 6] = "NETWORK_UNSTABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_FAILED"] = 7] = "MEDIA_REQUEST_FAILED"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_READY"] = 8] = "MEDIA_SERVER_NOT_READY"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_INITIALIZED"] = 9] = "MEDIA_SERVER_NOT_INITIALIZED"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_TIMEOUT"] = 10] = "MEDIA_REQUEST_TIMEOUT"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_UNKOWN_ERROR"] = 11] = "MEDIA_UNKOWN_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_KICKED_BY_SERVER_ERROR"] = 12] = "MEDIA_KICKED_BY_SERVER_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_CLOSED_ERROR"] = 13] = "MEDIA_SERVER_CLOSED_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_PUBLISH_ERROR"] = 14] = "MEDIA_SERVER_PUBLISH_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_SUBSCRIBE_ERROR"] = 15] = "MEDIA_SERVER_SUBSCRIBE_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_JOIN_ROOM_REFUSE_ERROR"] = 16] = "MEDIA_JOIN_ROOM_REFUSE_ERROR"; +})(RCUNICallErrorCode || (RCUNICallErrorCode = {})); + +var RCCallIWCallDisconnectedReason; + +(function (RCCallIWCallDisconnectedReason) { + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["CANCEL"] = 0] = "CANCEL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECT"] = 1] = "REJECT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP"] = 2] = "HANGUP"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["BUSY_LINE"] = 3] = "BUSY_LINE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NO_RESPONSE"] = 4] = "NO_RESPONSE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ENGINE_UNSUPPORTED"] = 5] = "ENGINE_UNSUPPORTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NETWORK_ERROR"] = 6] = "NETWORK_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_GET_ERROR"] = 7] = "RESOURCE_GET_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_PUBLISH_ERROR"] = 8] = "RESOURCE_PUBLISH_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_SUBSCRIBE_ERROR"] = 9] = "RESOURCE_SUBSCRIBE_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_CANCEL"] = 10] = "REMOTE_CANCEL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_REJECT"] = 11] = "REMOTE_REJECT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_HANGUP"] = 12] = "REMOTE_HANGUP"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_BUSY_LINE"] = 13] = "REMOTE_BUSY_LINE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NO_RESPONSE"] = 14] = "REMOTE_NO_RESPONSE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_ENGINE_UNSUPPORTED"] = 15] = "REMOTE_ENGINE_UNSUPPORTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NETWORK_ERROR"] = 16] = "REMOTE_NETWORK_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_GET_ERROR"] = 17] = "REMOTE_RESOURCE_GET_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_PUBLISH_ERROR"] = 18] = "REMOTE_RESOURCE_PUBLISH_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_SUBSCRIBE_ERROR"] = 19] = "REMOTE_RESOURCE_SUBSCRIBE_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_OTHER_CALL"] = 20] = "KICKED_BY_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["IN_OTHER_CALL"] = 21] = "IN_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_SERVER"] = 22] = "KICKED_BY_SERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_OTHER_CALL"] = 23] = "REMOTE_KICKED_BY_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_IN_OTHER_CALL"] = 24] = "REMOTE_IN_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_SERVER"] = 25] = "REMOTE_KICKED_BY_SERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ACCEPT_BY_OTHER_CLIENT"] = 26] = "ACCEPT_BY_OTHER_CLIENT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP_BY_OTHER_CLIENT"] = 27] = "HANGUP_BY_OTHER_CLIENT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECTED_BY_BLACKLIST"] = 28] = "REJECTED_BY_BLACKLIST"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_NOT_OPENED"] = 29] = "SERVICE_NOT_OPENED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["DROP_TO_OBSERVER"] = 30] = "DROP_TO_OBSERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["INIT_VIDEO_ERROR"] = 31] = "INIT_VIDEO_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["OTHER_DEVICE_HAD_ACCEPTED"] = 32] = "OTHER_DEVICE_HAD_ACCEPTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_DISCONNECTED"] = 33] = "SERVICE_DISCONNECTED"; +})(RCCallIWCallDisconnectedReason || (RCCallIWCallDisconnectedReason = {})); + +var RCCallIWAudioCodecType; + +(function (RCCallIWAudioCodecType) { + RCCallIWAudioCodecType[RCCallIWAudioCodecType["PCMU"] = 0] = "PCMU"; + RCCallIWAudioCodecType[RCCallIWAudioCodecType["OPUS"] = 111] = "OPUS"; +})(RCCallIWAudioCodecType || (RCCallIWAudioCodecType = {})); + +var RCCallIWAudioSource; + +(function (RCCallIWAudioSource) { + RCCallIWAudioSource[RCCallIWAudioSource["DEFAULT"] = 0] = "DEFAULT"; + RCCallIWAudioSource[RCCallIWAudioSource["MIC"] = 1] = "MIC"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_UPLINK"] = 2] = "VOICE_UPLINK"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_DOWNLINK"] = 3] = "VOICE_DOWNLINK"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_CALL"] = 4] = "VOICE_CALL"; + RCCallIWAudioSource[RCCallIWAudioSource["CAMCORDER"] = 5] = "CAMCORDER"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_RECOGNITION"] = 6] = "VOICE_RECOGNITION"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_COMMUNICATION"] = 7] = "VOICE_COMMUNICATION"; +})(RCCallIWAudioSource || (RCCallIWAudioSource = {})); + +var RCCallIWVideoProfile; + +(function (RCCallIWVideoProfile) { + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_144_256"] = 0] = "PROFILE_144_256"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_240"] = 1] = "PROFILE_240_240"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_320"] = 2] = "PROFILE_240_320"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_480"] = 3] = "PROFILE_360_480"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_640"] = 4] = "PROFILE_360_640"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_640"] = 5] = "PROFILE_480_640"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_720"] = 6] = "PROFILE_480_720"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_720_1280"] = 7] = "PROFILE_720_1280"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_1080_1920"] = 8] = "PROFILE_1080_1920"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_144_256_HIGH"] = 9] = "PROFILE_144_256_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_240_HIGH"] = 10] = "PROFILE_240_240_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_320_HIGH"] = 11] = "PROFILE_240_320_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_480_HIGH"] = 12] = "PROFILE_360_480_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_640_HIGH"] = 13] = "PROFILE_360_640_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_640_HIGH"] = 14] = "PROFILE_480_640_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_720_HIGH"] = 15] = "PROFILE_480_720_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_720_1280_HIGH"] = 16] = "PROFILE_720_1280_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_1080_1920_HIGH"] = 17] = "PROFILE_1080_1920_HIGH"; +})(RCCallIWVideoProfile || (RCCallIWVideoProfile = {})); + +var RCCallIWCameraOrientation; + +(function (RCCallIWCameraOrientation) { + RCCallIWCameraOrientation[RCCallIWCameraOrientation["PORTRAIT"] = 0] = "PORTRAIT"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["PORTRAIT_UPSIDE_DOWN"] = 1] = "PORTRAIT_UPSIDE_DOWN"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["LANDSCAPE_RIGHT"] = 2] = "LANDSCAPE_RIGHT"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["LANDSCAPE_LEFT"] = 3] = "LANDSCAPE_LEFT"; +})(RCCallIWCameraOrientation || (RCCallIWCameraOrientation = {})); + +var RCCallIWVideoBitrateMode; + +(function (RCCallIWVideoBitrateMode) { + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["CQ"] = 0] = "CQ"; + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["VBR"] = 1] = "VBR"; + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["CBR"] = 2] = "CBR"; +})(RCCallIWVideoBitrateMode || (RCCallIWVideoBitrateMode = {})); + +var RCCallIWNetworkQuality; + +(function (RCCallIWNetworkQuality) { + RCCallIWNetworkQuality[RCCallIWNetworkQuality["UNKNOWN"] = 0] = "UNKNOWN"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["EXCELLENT"] = 1] = "EXCELLENT"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["GOOD"] = 2] = "GOOD"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["POOR"] = 3] = "POOR"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["BAD"] = 4] = "BAD"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["TERRIBLE"] = 5] = "TERRIBLE"; +})(RCCallIWNetworkQuality || (RCCallIWNetworkQuality = {})); + +var RCCallIWImportanceHW; + +(function (RCCallIWImportanceHW) { + RCCallIWImportanceHW[RCCallIWImportanceHW["NORMAL"] = 0] = "NORMAL"; + RCCallIWImportanceHW[RCCallIWImportanceHW["LOW"] = 1] = "LOW"; +})(RCCallIWImportanceHW || (RCCallIWImportanceHW = {})); + +var RCCallIWCallType; + +(function (RCCallIWCallType) { + RCCallIWCallType[RCCallIWCallType["SINGLE"] = 0] = "SINGLE"; + RCCallIWCallType[RCCallIWCallType["GROUP"] = 1] = "GROUP"; +})(RCCallIWCallType || (RCCallIWCallType = {})); + +var RCCallIWUserType; + +(function (RCCallIWUserType) { + RCCallIWUserType[RCCallIWUserType["NORMAL"] = 0] = "NORMAL"; + RCCallIWUserType[RCCallIWUserType["OBSERVER"] = 1] = "OBSERVER"; +})(RCCallIWUserType || (RCCallIWUserType = {})); + +const call = uni.requireNativePlugin('RongCloud-Call-RCUniCall'); +const Platform = uni.getSystemInfoSync().platform; +function init() { + logger.log(`init Platform->${Platform}`); + call.init({}); +} +function unInit() { + logger.log(`unInit Platform->${Platform}`); + call.unInit(); +} +function onCallReceived(listener) { + logger.log(`Engine:OnCallReceived 监听通话呼入 Platform->${Platform}`); + call.addEventListener("Engine:OnCallReceived", listener); +} +function removeCallReceivedListener() { + logger.log(`removeCallReceivedListener`); + call.removeAllEventListeners('Engine:OnCallReceived'); +} +function onCallConnected(listener) { + logger.log(`Engine:OnCallConnected 已建立通话通话接通 Platform->${Platform}`); + call.addEventListener("Engine:OnCallConnected", listener); +} +function removeCallConnectedListener() { + logger.log(`removeCallConnectedListener`); + call.removeAllEventListeners('Engine:OnCallConnected'); +} +function onCallDisconnected(listener) { + logger.log(`Engine:OnCallDisconnected 监听通话结束 Platform->${Platform}`); + call.addEventListener("Engine:OnCallDisconnected", listener); +} +function removeCallDisconnectedListener() { + logger.log(`removeCallDisconnectedListener`); + call.removeAllEventListeners('Engine:OnCallDisconnected'); +} +function onRemoteUserInvited(listener) { + logger.log(`Engine:OnRemoteUserInvited 通话中的某一个参与者,邀请好友加入通话 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserInvited", listener); +} +function removeRemoteUserInvited() { + logger.log(`removeRemoteUserInvited`); + call.removeAllEventListeners('Engine:OnRemoteUserInvited'); +} +function onRemoteUserJoined(listener) { + logger.log(`Engine:OnRemoteUserJoined 对端用户加入通话 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserJoined", listener); +} +function removeRemoteUserJoinedListener() { + logger.log(`removeRemoteUserJoinedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserJoined'); +} +function onRemoteUserLeft(listener) { + logger.log(`Engine:OnRemoteUserLeft 对端用户挂断(群聊触发) Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserLeft", listener); +} +function removeRemoteUserLeftListener() { + logger.log(`removeRemoteUserLeftListener`); + call.removeAllEventListeners('Engine:OnRemoteUserLeft'); +} +function onCallOutgoing(listener) { + logger.log(`Engine:OnCallOutgoing 电话已拨出,通知当前 call 的详细信息 Platform->${Platform}`); + call.addEventListener("Engine:OnCallOutgoing", listener); +} +function removeCallOutgoingListener() { + logger.log(`removeCallOutgoingListener`); + call.removeAllEventListeners('Engine:OnCallOutgoing'); +} +function onRemoteUserRinging(listener) { + logger.log(`Engine:OnRemoteUserRinging 被叫端收到请求,发出振铃响应时监听 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserRinging", listener); +} +function removeRemoteUserRingingListener() { + logger.log(`removeRemoteUserRingingListener`); + call.removeAllEventListeners('Engine:OnRemoteUserRinging'); +} +function onError(listener) { + logger.log(`Engine:OnError 通话出现错误 Platform->${Platform}`); + call.addEventListener("Engine:OnError", listener); +} +function removeErrorListener() { + logger.log(`removeErrorListener`); + call.removeAllEventListeners('Engine:OnError'); +} +function onRemoteUserMediaTypeChanged(listener) { + logger.log(`Engine:OnRemoteUserMediaTypeChanged 对端用户切换了媒体类型 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserMediaTypeChanged", listener); +} +function removeRemoteUserMediaTypeChangedListener() { + logger.log(`removeRemoteUserMediaTypeChangedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserMediaTypeChanged'); +} +function onRemoteUserCameraStateChanged(listener) { + logger.log(`Engine:OnRemoteUserCameraStateChanged 对端用户关闭了摄像头 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserCameraStateChanged", listener); +} +function removeRemoteUserCameraStateChangedListener() { + logger.log(`removeRemoteUserCameraStateChangedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserCameraStateChanged'); +} +function onRemoteUserMicrophoneStateChanged(listener) { + logger.log(`Engine:OnRemoteUserMicrophoneStateChanged 对端用户开关麦克风 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserMicrophoneStateChanged", listener); +} +function removeRemoteUserMicrophoneStateChangedListener() { + logger.log(`removeRemoteUserMicrophoneStateChanged`); + call.removeAllEventListeners('Engine:OnRemoteUserMicrophoneStateChanged'); +} +function onNetworkQuality(listener) { + logger.log(`Engine:OnNetworkQuality Platform->${Platform}`); + call.addEventListener("Engine:OnNetworkQuality", listener); +} +function removeNetworkQualityListener() { + call.removeAllEventListeners('Engine:OnNetworkQuality'); +} +function onEnableCamera(listener) { + logger.log(`Engine:OnEnableCamera Platform->${Platform}`); + call.addEventListener("Engine:OnEnableCamera", listener); +} +function removeEnableCameraListener() { + logger.log(`removeEnableCameraListener`); + call.removeAllEventListeners('Engine:OnEnableCamera'); +} +function onSwitchCamera(listener) { + logger.log(`Engine:OnSwitchCamera Platform->${Platform}`); + call.addEventListener("Engine:OnSwitchCamera", listener); +} +function removeSwitchCameraListener() { + logger.log(`removeSwitchCameraListener`); + call.removeAllEventListeners('Engine:OnSwitchCamera'); +} +function getCurrentCallSession() { + logger.log(`getCurrentCallSession Platform->${Platform}`); + return call.getCurrentCallSession(); +} +function hangup() { + logger.log(`hangup Platform->${Platform}`); + call.hangup(); +} +function accept() { + logger.log(`accept Platform->${Platform}`); + call.accept(); +} +function startSingleCall(targetId, type, extra) { + logger.log(`startSingleCall targetId->${targetId} type=>${type} extra=>${extra} Platform->${Platform}`); + call.startSingleCall(targetId, type, extra); +} +function startGroupCall(groupId, userIds, observerUserIds, type, extra) { + logger.log(`startGroupCall groupId->${groupId} userIds=>${userIds} observerUserIds=>${observerUserIds} type=>${type} extra=>${extra} Platform->${Platform}`); + call.startGroupCall(groupId, userIds, observerUserIds, type, extra); +} +function inviteUsers(userIds, observerUserIds) { + logger.log(`inviteUsers 邀请用户->${userIds} Platform->${Platform}`); + call.inviteUsers(userIds, observerUserIds); +} +function setVideoView(userId, ref, type, isZOrderOnTop = false) { + logger.log(`setVideoView userId->${userId} ref=>${ref} type=>${type} isZOrderOnTop=>${isZOrderOnTop} Platform->${Platform}`); + Platform === 'android' ? call.setVideoView(userId, ref, type, isZOrderOnTop) : call.setVideoView(userId, ref, type); +} +function enableSpeaker(isOpen) { + logger.log(`enableSpeaker isOPen->${isOpen} Platform->${Platform}`); + call.enableSpeaker(isOpen); +} +function enableMicrophone(isOpen) { + logger.log(`enableMicrophone isOPen->${isOpen} Platform->${Platform}`); + call.enableMicrophone(isOpen); +} +function switchCamera() { + logger.log(`switchCamera Platform->${Platform}`); + call.switchCamera(); +} +function currentCamera() { + logger.log(`currentCamera Platform->${Platform}`); + return call.currentCamera(); +} +function enableCamera(isOpen, camera) { + logger.log(`enableCamera isOpen=>${isOpen} camera=>${camera} Platform->${Platform}`); + call.enableCamera(isOpen, camera); +} +function changeMediaType(type) { + logger.log(`changeMediaType type=>${type} Platform->${Platform}`); + call.changeMediaType(type); +} +function setAudioConfig(config) { + logger.log(`setAudioConfig config=>${config} Platform->${Platform}`); + call.setAudioConfig(config); +} +function setVideoConfig(config) { + logger.log(`setVideoConfig config=>${config} Platform->${Platform}`); + call.setVideoConfig(config); +} +function setPushConfig(config, hangupPushConfig) { + logger.log(`setPushConfig config=>${config} hangupPushConfig=>${hangupPushConfig} Platform->${Platform}`); + call.setPushConfig(config, hangupPushConfig); +} + +export { RCCallIWAudioCodecType, RCCallIWAudioSource, RCCallIWCallDisconnectedReason, RCCallIWCallType, RCCallIWCamera, RCCallIWCameraOrientation, RCCallIWImportanceHW, RCCallIWMediaType, RCCallIWNetworkQuality, RCCallIWUserType, RCCallIWVideoBitrateMode, RCCallIWVideoProfile, RCUNICallErrorCode, accept, changeMediaType, currentCamera, enableCamera, enableMicrophone, enableSpeaker, getCurrentCallSession, hangup, init, inviteUsers, onCallConnected, onCallDisconnected, onCallOutgoing, onCallReceived, onEnableCamera, onError, onNetworkQuality, onRemoteUserCameraStateChanged, onRemoteUserInvited, onRemoteUserJoined, onRemoteUserLeft, onRemoteUserMediaTypeChanged, onRemoteUserMicrophoneStateChanged, onRemoteUserRinging, onSwitchCamera, removeCallConnectedListener, removeCallDisconnectedListener, removeCallOutgoingListener, removeCallReceivedListener, removeEnableCameraListener, removeErrorListener, removeNetworkQualityListener, removeRemoteUserCameraStateChangedListener, removeRemoteUserInvited, removeRemoteUserJoinedListener, removeRemoteUserLeftListener, removeRemoteUserMediaTypeChangedListener, removeRemoteUserMicrophoneStateChangedListener, removeRemoteUserRingingListener, removeSwitchCameraListener, setAudioConfig, setPushConfig, setVideoConfig, setVideoView, startGroupCall, startSingleCall, switchCamera, unInit }; diff --git a/uni_modules/RongCloud-CallWrapper/lib/index.js b/uni_modules/RongCloud-CallWrapper/lib/index.js new file mode 100644 index 0000000..9c8d0a6 --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/lib/index.js @@ -0,0 +1,434 @@ +/* + * RCCallUni - v5.30.0 + * CommitId - cf4b2f0ffe2ae11c39bbfc216890745f254753c9 + * Tue Dec 02 2025 16:50:41 GMT+0800 (China Standard Time) + * ©2020 RongCloud, Inc. All rights reserved. + */ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +class Logger { + tag; + + constructor(tag) { + this.tag = tag; + } + + log(str) { + console.log(`[${this.tag}] ${new Date().toISOString()} ${str}`); + } + +} +const logger = new Logger('RCUNICallLib'); + +exports.RCCallIWCamera = void 0; + +(function (RCCallIWCamera) { + RCCallIWCamera[RCCallIWCamera["NONE"] = 0] = "NONE"; + RCCallIWCamera[RCCallIWCamera["FRONT"] = 1] = "FRONT"; + RCCallIWCamera[RCCallIWCamera["BACK"] = 2] = "BACK"; +})(exports.RCCallIWCamera || (exports.RCCallIWCamera = {})); + +exports.RCCallIWMediaType = void 0; + +(function (RCCallIWMediaType) { + RCCallIWMediaType[RCCallIWMediaType["AUDIO"] = 0] = "AUDIO"; + RCCallIWMediaType[RCCallIWMediaType["AUDIO_VIDEO"] = 1] = "AUDIO_VIDEO"; +})(exports.RCCallIWMediaType || (exports.RCCallIWMediaType = {})); + +exports.RCUNICallErrorCode = void 0; + +(function (RCUNICallErrorCode) { + RCUNICallErrorCode[RCUNICallErrorCode["SUCCESS"] = 0] = "SUCCESS"; + RCUNICallErrorCode[RCUNICallErrorCode["ENGINE_NOT_FOUND"] = 1] = "ENGINE_NOT_FOUND"; + RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNAVAILABLE"] = 2] = "NETWORK_UNAVAILABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["ONE_CALL_EXISTED"] = 3] = "ONE_CALL_EXISTED"; + RCUNICallErrorCode[RCUNICallErrorCode["OPERATION_UNAVAILABLE"] = 4] = "OPERATION_UNAVAILABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["INVALID_PARAM"] = 5] = "INVALID_PARAM"; + RCUNICallErrorCode[RCUNICallErrorCode["NETWORK_UNSTABLE"] = 6] = "NETWORK_UNSTABLE"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_FAILED"] = 7] = "MEDIA_REQUEST_FAILED"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_READY"] = 8] = "MEDIA_SERVER_NOT_READY"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_NOT_INITIALIZED"] = 9] = "MEDIA_SERVER_NOT_INITIALIZED"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_REQUEST_TIMEOUT"] = 10] = "MEDIA_REQUEST_TIMEOUT"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_UNKOWN_ERROR"] = 11] = "MEDIA_UNKOWN_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_KICKED_BY_SERVER_ERROR"] = 12] = "MEDIA_KICKED_BY_SERVER_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_CLOSED_ERROR"] = 13] = "MEDIA_SERVER_CLOSED_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_PUBLISH_ERROR"] = 14] = "MEDIA_SERVER_PUBLISH_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_SERVER_SUBSCRIBE_ERROR"] = 15] = "MEDIA_SERVER_SUBSCRIBE_ERROR"; + RCUNICallErrorCode[RCUNICallErrorCode["MEDIA_JOIN_ROOM_REFUSE_ERROR"] = 16] = "MEDIA_JOIN_ROOM_REFUSE_ERROR"; +})(exports.RCUNICallErrorCode || (exports.RCUNICallErrorCode = {})); + +exports.RCCallIWCallDisconnectedReason = void 0; + +(function (RCCallIWCallDisconnectedReason) { + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["CANCEL"] = 0] = "CANCEL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECT"] = 1] = "REJECT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP"] = 2] = "HANGUP"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["BUSY_LINE"] = 3] = "BUSY_LINE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NO_RESPONSE"] = 4] = "NO_RESPONSE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ENGINE_UNSUPPORTED"] = 5] = "ENGINE_UNSUPPORTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["NETWORK_ERROR"] = 6] = "NETWORK_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_GET_ERROR"] = 7] = "RESOURCE_GET_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_PUBLISH_ERROR"] = 8] = "RESOURCE_PUBLISH_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["RESOURCE_SUBSCRIBE_ERROR"] = 9] = "RESOURCE_SUBSCRIBE_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_CANCEL"] = 10] = "REMOTE_CANCEL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_REJECT"] = 11] = "REMOTE_REJECT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_HANGUP"] = 12] = "REMOTE_HANGUP"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_BUSY_LINE"] = 13] = "REMOTE_BUSY_LINE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NO_RESPONSE"] = 14] = "REMOTE_NO_RESPONSE"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_ENGINE_UNSUPPORTED"] = 15] = "REMOTE_ENGINE_UNSUPPORTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_NETWORK_ERROR"] = 16] = "REMOTE_NETWORK_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_GET_ERROR"] = 17] = "REMOTE_RESOURCE_GET_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_PUBLISH_ERROR"] = 18] = "REMOTE_RESOURCE_PUBLISH_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_RESOURCE_SUBSCRIBE_ERROR"] = 19] = "REMOTE_RESOURCE_SUBSCRIBE_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_OTHER_CALL"] = 20] = "KICKED_BY_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["IN_OTHER_CALL"] = 21] = "IN_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["KICKED_BY_SERVER"] = 22] = "KICKED_BY_SERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_OTHER_CALL"] = 23] = "REMOTE_KICKED_BY_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_IN_OTHER_CALL"] = 24] = "REMOTE_IN_OTHER_CALL"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REMOTE_KICKED_BY_SERVER"] = 25] = "REMOTE_KICKED_BY_SERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["ACCEPT_BY_OTHER_CLIENT"] = 26] = "ACCEPT_BY_OTHER_CLIENT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["HANGUP_BY_OTHER_CLIENT"] = 27] = "HANGUP_BY_OTHER_CLIENT"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["REJECTED_BY_BLACKLIST"] = 28] = "REJECTED_BY_BLACKLIST"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_NOT_OPENED"] = 29] = "SERVICE_NOT_OPENED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["DROP_TO_OBSERVER"] = 30] = "DROP_TO_OBSERVER"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["INIT_VIDEO_ERROR"] = 31] = "INIT_VIDEO_ERROR"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["OTHER_DEVICE_HAD_ACCEPTED"] = 32] = "OTHER_DEVICE_HAD_ACCEPTED"; + RCCallIWCallDisconnectedReason[RCCallIWCallDisconnectedReason["SERVICE_DISCONNECTED"] = 33] = "SERVICE_DISCONNECTED"; +})(exports.RCCallIWCallDisconnectedReason || (exports.RCCallIWCallDisconnectedReason = {})); + +exports.RCCallIWAudioCodecType = void 0; + +(function (RCCallIWAudioCodecType) { + RCCallIWAudioCodecType[RCCallIWAudioCodecType["PCMU"] = 0] = "PCMU"; + RCCallIWAudioCodecType[RCCallIWAudioCodecType["OPUS"] = 111] = "OPUS"; +})(exports.RCCallIWAudioCodecType || (exports.RCCallIWAudioCodecType = {})); + +exports.RCCallIWAudioSource = void 0; + +(function (RCCallIWAudioSource) { + RCCallIWAudioSource[RCCallIWAudioSource["DEFAULT"] = 0] = "DEFAULT"; + RCCallIWAudioSource[RCCallIWAudioSource["MIC"] = 1] = "MIC"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_UPLINK"] = 2] = "VOICE_UPLINK"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_DOWNLINK"] = 3] = "VOICE_DOWNLINK"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_CALL"] = 4] = "VOICE_CALL"; + RCCallIWAudioSource[RCCallIWAudioSource["CAMCORDER"] = 5] = "CAMCORDER"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_RECOGNITION"] = 6] = "VOICE_RECOGNITION"; + RCCallIWAudioSource[RCCallIWAudioSource["VOICE_COMMUNICATION"] = 7] = "VOICE_COMMUNICATION"; +})(exports.RCCallIWAudioSource || (exports.RCCallIWAudioSource = {})); + +exports.RCCallIWVideoProfile = void 0; + +(function (RCCallIWVideoProfile) { + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_144_256"] = 0] = "PROFILE_144_256"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_240"] = 1] = "PROFILE_240_240"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_320"] = 2] = "PROFILE_240_320"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_480"] = 3] = "PROFILE_360_480"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_640"] = 4] = "PROFILE_360_640"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_640"] = 5] = "PROFILE_480_640"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_720"] = 6] = "PROFILE_480_720"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_720_1280"] = 7] = "PROFILE_720_1280"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_1080_1920"] = 8] = "PROFILE_1080_1920"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_144_256_HIGH"] = 9] = "PROFILE_144_256_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_240_HIGH"] = 10] = "PROFILE_240_240_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_240_320_HIGH"] = 11] = "PROFILE_240_320_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_480_HIGH"] = 12] = "PROFILE_360_480_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_360_640_HIGH"] = 13] = "PROFILE_360_640_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_640_HIGH"] = 14] = "PROFILE_480_640_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_480_720_HIGH"] = 15] = "PROFILE_480_720_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_720_1280_HIGH"] = 16] = "PROFILE_720_1280_HIGH"; + RCCallIWVideoProfile[RCCallIWVideoProfile["PROFILE_1080_1920_HIGH"] = 17] = "PROFILE_1080_1920_HIGH"; +})(exports.RCCallIWVideoProfile || (exports.RCCallIWVideoProfile = {})); + +exports.RCCallIWCameraOrientation = void 0; + +(function (RCCallIWCameraOrientation) { + RCCallIWCameraOrientation[RCCallIWCameraOrientation["PORTRAIT"] = 0] = "PORTRAIT"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["PORTRAIT_UPSIDE_DOWN"] = 1] = "PORTRAIT_UPSIDE_DOWN"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["LANDSCAPE_RIGHT"] = 2] = "LANDSCAPE_RIGHT"; + RCCallIWCameraOrientation[RCCallIWCameraOrientation["LANDSCAPE_LEFT"] = 3] = "LANDSCAPE_LEFT"; +})(exports.RCCallIWCameraOrientation || (exports.RCCallIWCameraOrientation = {})); + +exports.RCCallIWVideoBitrateMode = void 0; + +(function (RCCallIWVideoBitrateMode) { + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["CQ"] = 0] = "CQ"; + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["VBR"] = 1] = "VBR"; + RCCallIWVideoBitrateMode[RCCallIWVideoBitrateMode["CBR"] = 2] = "CBR"; +})(exports.RCCallIWVideoBitrateMode || (exports.RCCallIWVideoBitrateMode = {})); + +exports.RCCallIWNetworkQuality = void 0; + +(function (RCCallIWNetworkQuality) { + RCCallIWNetworkQuality[RCCallIWNetworkQuality["UNKNOWN"] = 0] = "UNKNOWN"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["EXCELLENT"] = 1] = "EXCELLENT"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["GOOD"] = 2] = "GOOD"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["POOR"] = 3] = "POOR"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["BAD"] = 4] = "BAD"; + RCCallIWNetworkQuality[RCCallIWNetworkQuality["TERRIBLE"] = 5] = "TERRIBLE"; +})(exports.RCCallIWNetworkQuality || (exports.RCCallIWNetworkQuality = {})); + +exports.RCCallIWImportanceHW = void 0; + +(function (RCCallIWImportanceHW) { + RCCallIWImportanceHW[RCCallIWImportanceHW["NORMAL"] = 0] = "NORMAL"; + RCCallIWImportanceHW[RCCallIWImportanceHW["LOW"] = 1] = "LOW"; +})(exports.RCCallIWImportanceHW || (exports.RCCallIWImportanceHW = {})); + +exports.RCCallIWCallType = void 0; + +(function (RCCallIWCallType) { + RCCallIWCallType[RCCallIWCallType["SINGLE"] = 0] = "SINGLE"; + RCCallIWCallType[RCCallIWCallType["GROUP"] = 1] = "GROUP"; +})(exports.RCCallIWCallType || (exports.RCCallIWCallType = {})); + +exports.RCCallIWUserType = void 0; + +(function (RCCallIWUserType) { + RCCallIWUserType[RCCallIWUserType["NORMAL"] = 0] = "NORMAL"; + RCCallIWUserType[RCCallIWUserType["OBSERVER"] = 1] = "OBSERVER"; +})(exports.RCCallIWUserType || (exports.RCCallIWUserType = {})); + +const call = uni.requireNativePlugin('RongCloud-Call-RCUniCall'); +const Platform = uni.getSystemInfoSync().platform; +function init() { + logger.log(`init Platform->${Platform}`); + call.init({}); +} +function unInit() { + logger.log(`unInit Platform->${Platform}`); + call.unInit(); +} +function onCallReceived(listener) { + logger.log(`Engine:OnCallReceived 监听通话呼入 Platform->${Platform}`); + call.addEventListener("Engine:OnCallReceived", listener); +} +function removeCallReceivedListener() { + logger.log(`removeCallReceivedListener`); + call.removeAllEventListeners('Engine:OnCallReceived'); +} +function onCallConnected(listener) { + logger.log(`Engine:OnCallConnected 已建立通话通话接通 Platform->${Platform}`); + call.addEventListener("Engine:OnCallConnected", listener); +} +function removeCallConnectedListener() { + logger.log(`removeCallConnectedListener`); + call.removeAllEventListeners('Engine:OnCallConnected'); +} +function onCallDisconnected(listener) { + logger.log(`Engine:OnCallDisconnected 监听通话结束 Platform->${Platform}`); + call.addEventListener("Engine:OnCallDisconnected", listener); +} +function removeCallDisconnectedListener() { + logger.log(`removeCallDisconnectedListener`); + call.removeAllEventListeners('Engine:OnCallDisconnected'); +} +function onRemoteUserInvited(listener) { + logger.log(`Engine:OnRemoteUserInvited 通话中的某一个参与者,邀请好友加入通话 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserInvited", listener); +} +function removeRemoteUserInvited() { + logger.log(`removeRemoteUserInvited`); + call.removeAllEventListeners('Engine:OnRemoteUserInvited'); +} +function onRemoteUserJoined(listener) { + logger.log(`Engine:OnRemoteUserJoined 对端用户加入通话 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserJoined", listener); +} +function removeRemoteUserJoinedListener() { + logger.log(`removeRemoteUserJoinedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserJoined'); +} +function onRemoteUserLeft(listener) { + logger.log(`Engine:OnRemoteUserLeft 对端用户挂断(群聊触发) Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserLeft", listener); +} +function removeRemoteUserLeftListener() { + logger.log(`removeRemoteUserLeftListener`); + call.removeAllEventListeners('Engine:OnRemoteUserLeft'); +} +function onCallOutgoing(listener) { + logger.log(`Engine:OnCallOutgoing 电话已拨出,通知当前 call 的详细信息 Platform->${Platform}`); + call.addEventListener("Engine:OnCallOutgoing", listener); +} +function removeCallOutgoingListener() { + logger.log(`removeCallOutgoingListener`); + call.removeAllEventListeners('Engine:OnCallOutgoing'); +} +function onRemoteUserRinging(listener) { + logger.log(`Engine:OnRemoteUserRinging 被叫端收到请求,发出振铃响应时监听 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserRinging", listener); +} +function removeRemoteUserRingingListener() { + logger.log(`removeRemoteUserRingingListener`); + call.removeAllEventListeners('Engine:OnRemoteUserRinging'); +} +function onError(listener) { + logger.log(`Engine:OnError 通话出现错误 Platform->${Platform}`); + call.addEventListener("Engine:OnError", listener); +} +function removeErrorListener() { + logger.log(`removeErrorListener`); + call.removeAllEventListeners('Engine:OnError'); +} +function onRemoteUserMediaTypeChanged(listener) { + logger.log(`Engine:OnRemoteUserMediaTypeChanged 对端用户切换了媒体类型 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserMediaTypeChanged", listener); +} +function removeRemoteUserMediaTypeChangedListener() { + logger.log(`removeRemoteUserMediaTypeChangedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserMediaTypeChanged'); +} +function onRemoteUserCameraStateChanged(listener) { + logger.log(`Engine:OnRemoteUserCameraStateChanged 对端用户关闭了摄像头 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserCameraStateChanged", listener); +} +function removeRemoteUserCameraStateChangedListener() { + logger.log(`removeRemoteUserCameraStateChangedListener`); + call.removeAllEventListeners('Engine:OnRemoteUserCameraStateChanged'); +} +function onRemoteUserMicrophoneStateChanged(listener) { + logger.log(`Engine:OnRemoteUserMicrophoneStateChanged 对端用户开关麦克风 Platform->${Platform}`); + call.addEventListener("Engine:OnRemoteUserMicrophoneStateChanged", listener); +} +function removeRemoteUserMicrophoneStateChangedListener() { + logger.log(`removeRemoteUserMicrophoneStateChanged`); + call.removeAllEventListeners('Engine:OnRemoteUserMicrophoneStateChanged'); +} +function onNetworkQuality(listener) { + logger.log(`Engine:OnNetworkQuality Platform->${Platform}`); + call.addEventListener("Engine:OnNetworkQuality", listener); +} +function removeNetworkQualityListener() { + call.removeAllEventListeners('Engine:OnNetworkQuality'); +} +function onEnableCamera(listener) { + logger.log(`Engine:OnEnableCamera Platform->${Platform}`); + call.addEventListener("Engine:OnEnableCamera", listener); +} +function removeEnableCameraListener() { + logger.log(`removeEnableCameraListener`); + call.removeAllEventListeners('Engine:OnEnableCamera'); +} +function onSwitchCamera(listener) { + logger.log(`Engine:OnSwitchCamera Platform->${Platform}`); + call.addEventListener("Engine:OnSwitchCamera", listener); +} +function removeSwitchCameraListener() { + logger.log(`removeSwitchCameraListener`); + call.removeAllEventListeners('Engine:OnSwitchCamera'); +} +function getCurrentCallSession() { + logger.log(`getCurrentCallSession Platform->${Platform}`); + return call.getCurrentCallSession(); +} +function hangup() { + logger.log(`hangup Platform->${Platform}`); + call.hangup(); +} +function accept() { + logger.log(`accept Platform->${Platform}`); + call.accept(); +} +function startSingleCall(targetId, type, extra) { + logger.log(`startSingleCall targetId->${targetId} type=>${type} extra=>${extra} Platform->${Platform}`); + call.startSingleCall(targetId, type, extra); +} +function startGroupCall(groupId, userIds, observerUserIds, type, extra) { + logger.log(`startGroupCall groupId->${groupId} userIds=>${userIds} observerUserIds=>${observerUserIds} type=>${type} extra=>${extra} Platform->${Platform}`); + call.startGroupCall(groupId, userIds, observerUserIds, type, extra); +} +function inviteUsers(userIds, observerUserIds) { + logger.log(`inviteUsers 邀请用户->${userIds} Platform->${Platform}`); + call.inviteUsers(userIds, observerUserIds); +} +function setVideoView(userId, ref, type, isZOrderOnTop = false) { + logger.log(`setVideoView userId->${userId} ref=>${ref} type=>${type} isZOrderOnTop=>${isZOrderOnTop} Platform->${Platform}`); + Platform === 'android' ? call.setVideoView(userId, ref, type, isZOrderOnTop) : call.setVideoView(userId, ref, type); +} +function enableSpeaker(isOpen) { + logger.log(`enableSpeaker isOPen->${isOpen} Platform->${Platform}`); + call.enableSpeaker(isOpen); +} +function enableMicrophone(isOpen) { + logger.log(`enableMicrophone isOPen->${isOpen} Platform->${Platform}`); + call.enableMicrophone(isOpen); +} +function switchCamera() { + logger.log(`switchCamera Platform->${Platform}`); + call.switchCamera(); +} +function currentCamera() { + logger.log(`currentCamera Platform->${Platform}`); + return call.currentCamera(); +} +function enableCamera(isOpen, camera) { + logger.log(`enableCamera isOpen=>${isOpen} camera=>${camera} Platform->${Platform}`); + call.enableCamera(isOpen, camera); +} +function changeMediaType(type) { + logger.log(`changeMediaType type=>${type} Platform->${Platform}`); + call.changeMediaType(type); +} +function setAudioConfig(config) { + logger.log(`setAudioConfig config=>${config} Platform->${Platform}`); + call.setAudioConfig(config); +} +function setVideoConfig(config) { + logger.log(`setVideoConfig config=>${config} Platform->${Platform}`); + call.setVideoConfig(config); +} +function setPushConfig(config, hangupPushConfig) { + logger.log(`setPushConfig config=>${config} hangupPushConfig=>${hangupPushConfig} Platform->${Platform}`); + call.setPushConfig(config, hangupPushConfig); +} + +exports.accept = accept; +exports.changeMediaType = changeMediaType; +exports.currentCamera = currentCamera; +exports.enableCamera = enableCamera; +exports.enableMicrophone = enableMicrophone; +exports.enableSpeaker = enableSpeaker; +exports.getCurrentCallSession = getCurrentCallSession; +exports.hangup = hangup; +exports.init = init; +exports.inviteUsers = inviteUsers; +exports.onCallConnected = onCallConnected; +exports.onCallDisconnected = onCallDisconnected; +exports.onCallOutgoing = onCallOutgoing; +exports.onCallReceived = onCallReceived; +exports.onEnableCamera = onEnableCamera; +exports.onError = onError; +exports.onNetworkQuality = onNetworkQuality; +exports.onRemoteUserCameraStateChanged = onRemoteUserCameraStateChanged; +exports.onRemoteUserInvited = onRemoteUserInvited; +exports.onRemoteUserJoined = onRemoteUserJoined; +exports.onRemoteUserLeft = onRemoteUserLeft; +exports.onRemoteUserMediaTypeChanged = onRemoteUserMediaTypeChanged; +exports.onRemoteUserMicrophoneStateChanged = onRemoteUserMicrophoneStateChanged; +exports.onRemoteUserRinging = onRemoteUserRinging; +exports.onSwitchCamera = onSwitchCamera; +exports.removeCallConnectedListener = removeCallConnectedListener; +exports.removeCallDisconnectedListener = removeCallDisconnectedListener; +exports.removeCallOutgoingListener = removeCallOutgoingListener; +exports.removeCallReceivedListener = removeCallReceivedListener; +exports.removeEnableCameraListener = removeEnableCameraListener; +exports.removeErrorListener = removeErrorListener; +exports.removeNetworkQualityListener = removeNetworkQualityListener; +exports.removeRemoteUserCameraStateChangedListener = removeRemoteUserCameraStateChangedListener; +exports.removeRemoteUserInvited = removeRemoteUserInvited; +exports.removeRemoteUserJoinedListener = removeRemoteUserJoinedListener; +exports.removeRemoteUserLeftListener = removeRemoteUserLeftListener; +exports.removeRemoteUserMediaTypeChangedListener = removeRemoteUserMediaTypeChangedListener; +exports.removeRemoteUserMicrophoneStateChangedListener = removeRemoteUserMicrophoneStateChangedListener; +exports.removeRemoteUserRingingListener = removeRemoteUserRingingListener; +exports.removeSwitchCameraListener = removeSwitchCameraListener; +exports.setAudioConfig = setAudioConfig; +exports.setPushConfig = setPushConfig; +exports.setVideoConfig = setVideoConfig; +exports.setVideoView = setVideoView; +exports.startGroupCall = startGroupCall; +exports.startSingleCall = startSingleCall; +exports.switchCamera = switchCamera; +exports.unInit = unInit; diff --git a/uni_modules/RongCloud-CallWrapper/package.json b/uni_modules/RongCloud-CallWrapper/package.json new file mode 100644 index 0000000..54a4428 --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/package.json @@ -0,0 +1,80 @@ +{ + "id": "RongCloud-CallWrapper", + "displayName": "RongCloud-CallWrapper", + "version": "5.30.0", + "description": "RongCloud-CallWrapper", + "keywords": [ + "RongCloud,call,rtc" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "", + "type": "sdk-js" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-harmony": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "n", + "Android Browser": "n", + "微信浏览器(Android)": "n", + "QQ浏览器(Android)": "n" + }, + "H5-pc": { + "Chrome": "n", + "IE": "n", + "Edge": "n", + "Firefox": "n", + "Safari": "n" + }, + "小程序": { + "微信": "n", + "阿里": "n", + "百度": "n", + "字节跳动": "n", + "QQ": "n" + }, + "快应用": { + "华为": "n", + "联盟": "n" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/RongCloud-CallWrapper/readme.md b/uni_modules/RongCloud-CallWrapper/readme.md new file mode 100644 index 0000000..795396b --- /dev/null +++ b/uni_modules/RongCloud-CallWrapper/readme.md @@ -0,0 +1,2 @@ +# RongCloud-CallWrapper +融云 RCUniCall 原生插件的 JS 适配层,请搭配 RCUniCall 使用。 \ No newline at end of file diff --git a/uni_modules/RongCloud-IMWrapper-V2/changelog.md b/uni_modules/RongCloud-IMWrapper-V2/changelog.md new file mode 100644 index 0000000..fc3ed0b --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/changelog.md @@ -0,0 +1,28 @@ +## 5.30.0-1(2025-12-25) +优化接口参数、回调参数的类型声明 +## 5.30.0-1(2025-12-25) +优化接口参数、回调参数的类型声明 +## 5.30.0(2025-12-12) +同步 RCUniIMV2 升级至 5.30.0 +## 5.12.1(2024-12-16) +支持新版原生自定义消息 +## 5.8.3(2024-08-16) +增加对接口参数类型的检查 +## 5.6.10(2024-03-18) +1、IM 初始化配置新增区域码设置 +2、新增推送 token 上报接口 +## 5.4.5(2023-07-05) +适配 RCUniIMV2 原生插件 5.4.5,会话新增 operationTime 参数 +## 5.4.0(2023-04-24) +适配融云 IM 5.4.0 版本 +## 5.2.4(2022-08-26) +融云 uni-app im sdk 5.2.3 以及之前的旧版 SDK 已不再进行维护,旧版开发文档不再公开提供,建议已集成旧版 SDK 的客户迁移到新版本 SDK。新版本 SDK 整体进行了优化重构。所有新功能都将在新版 SDK 中进行添加。 +## 5.2.3(2022-07-08) +1.添加聊天室属性(KV) +2.敏感信息拦截回调 +## 5.1.8-1(2022-05-09) +增加 searchMessagesByUserId 方法 +## 5.1.3-7(2022-01-19) +调整私聊已读回执回调参数 +## 0.0.1(2022-01-19) +从npm迁入插件市场 diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.d.ts b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.d.ts new file mode 100644 index 0000000..d77a53b --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.d.ts @@ -0,0 +1,3316 @@ +export declare enum RCIMIWPushType { + /** + * iOS + */ + iOS = 0, + /** + * 未知类型 + */ + unknown = 1, + /** + * 融云自己的,不再使用 + */ + rong = 2, + /** + * 华为推送 + */ + huawei = 3, + /** + * 小米推送 + */ + xiaomi = 4, + /** + * FCM 推送 + */ + googleFCM = 5, + /** + * GCM 推送 + */ + googleGCM = 6, + /** + * 魅族推送 + */ + meizu = 7, + /** + * VIVO 推送 + */ + vivo = 8, + /** + * OPPO 推送 + */ + oppo = 9, + /** + * 华为荣耀推送 + */ + honor = 10 +} +export interface RCIMIWAndroidPushOptions { + /** + * Android 平台 Push 唯一标识。 + * 目前支持小米、华为推送平台,默认开发者不需要进行设置。 + * 当消息产生推送时,消息的 messageUId 作为 notificationId 使用。 + */ + notificationId?: string; + /** + * 小米的渠道 ID + * 该条消息针对小米使用的推送渠道。 + */ + channelIdMi?: string; + /** + * 华为的渠道 ID + * 该条消息针对华为使用的推送渠道,如开发者集成了华为推送,需要指定 channelId 时,可向 Android 端研发人员获取,channelId 由开发者自行创建。 + */ + channelIdHW?: string; + categoryHW?: string; + /** + * OPPO 的渠道 ID。 + * 该条消息针对 OPPO 使用的推送渠道,如开发者集成了 OPPO 推送,需要指定 channelId 时,可向 Android 端研发人员获取,channelId 由开发者自行创建。 + */ + channelIdOPPO?: string; + /** + * VIVO 推送通道类型 开发者集成了 VIVO 推送,需要指定推送类型时,可进行设置。 + */ + pushTypeVIVO?: RCIMIWVIVOPushType; + /** + * FCM 通知类型推送时所使用的分组 id + */ + collapseKeyFCM?: string; + /** + * FCM 通知类型的推送所使用的通知图片 url + */ + imageUrlFCM?: string; + /** + * 华为推送消息级别 + */ + importanceHW?: RCIMIWImportanceHW; + /** + * 华为通知栏消息右侧大图标 URL,如果不设置,则不展示通知栏右侧图标。 + * URL使用的协议必须是HTTPS协议,取值样例:https://example.com/image.png。图标文件须小于 512KB,图标建议规格大小:40dp x 40dp,弧角大小为 8dp,超出建议规格大小的图标会存在图片压缩或显示不全的情况。 + */ + imageUrlHW?: string; + /** + * 小米 Large icon 链接 + * Large icon 可以出现在大图版和多字版消息中,显示在右边。国内版仅 MIUI12 以上版本支持,以下版本均不支持;国际版支持。 + * 图片要求:大小 120 120px,格式为 png 或者 jpg 格式 + */ + imageUrlMi?: string; + /** + * FCM 通知的频道 ID,该应用程序必须使用此频道 ID 创建一个频道,然后才能收到带有该频道 ID 的任何通知。 + * 如果您未在请求中发送此频道 ID,或者如果应用尚未创建提供的频道 ID,则 FCM 使用应用清单中指定的频道 ID。 + */ + channelIdFCM?: string; + categoryVivo?: string; + /** + * 荣耀推送消息级别 + */ + importanceHonor?: RCIMIWImportanceHonor; + /** + * 荣耀通知栏消息右侧大图标 URL,如果不设置,则不展示通知栏右侧图标。 + * URL使用的协议必须是HTTPS协议,取值样例:https://example.com/image.png。图标文件须小于 512KB,图标建议规格大小:40dp x 40dp,弧角大小为 8dp,超出建议规格大小的图标会存在图片压缩或显示不全的情况。 + */ + imageUrlHonor?: string; +} +export interface RCIMIWMessagePushOptions { + /** + * 是否发送通知 + * @return + */ + disableNotification?: boolean; + /** + * 通知栏是否屏蔽通知标题 + * true 不显示通知标题,false 显示通知标题 + * 默认情况下融云单聊消息通知标题为用户名、群聊消息为群名称,设置后不会再显示通知标题。 + * 此属性只针目标用户为iOS 平台时有效,Android 第三方推送平台的通知标题为必填项,所以暂不支持。 + */ + disablePushTitle?: boolean; + /** + * 推送标题 + * 默认标题显示规则:内置消息:单聊通知标题显示为发送者名称,群聊通知标题显示为群名称。 自定义消息:默认不显示标题。 + * @return + */ + pushTitle?: string; + /** + * 推送内容。 + * @return + */ + pushContent?: string; + /** + * 远程推送附加信息. + * @return + */ + pushData?: string; + /** + * 是否强制显示通知详情。 当目标用户设置推送不显示消息详情时, 可通过此功能,强制设置该条消息显示推送详情。 + * @return + */ + forceShowDetailContent?: boolean; + /** + * 推送模板 ID + * 设置后根据目标用户通过 setPushLanguageCode 设置的语言环境,匹配模板中设置的语言内容进行推送 + * 未匹配成功时使用默认内容进行推送,模板内容在“开发者后台-自定义推送文案”中进行设置 注:RCMessagePushConfig 中的 Title 和 PushContent + * 优先级高于模板 ID(templateId)中对应的标题和推送内容 + * @return + */ + templateId?: string; + /** + * 如果对端设备是 iOS,设置 isVoIPPush 为 True,会走 VoIP 通道推送 Push。 + * @return + */ + voIPPush?: boolean; + /** + * iOS 平台相关配置 + * @return + */ + iOSPushOptions?: RCIMIWIOSPushOptions; + /** + * Android 平台相关配置 + * @return + */ + androidPushOptions?: RCIMIWAndroidPushOptions; +} +export interface RCIMIWIOSPushOptions { + /** + * iOS 平台通知栏分组 ID 相同的 thread-id 推送分为一组 iOS10 开始支持 + * @return + */ + threadId?: string; + /** + * iOS 富文本推送的类型开发者自己定义,自己在 App 端进行解析判断,与 richMediaUri 一起使用,当设置 category 后,推送时默认携带 mutable-content 进行推送,属性值为 1。 + * 如果不设置后台默认取消息类型字符串,如RC:TxtMsg + * @return + */ + category?: string; + /** + * iOS 平台通知覆盖 ID apnsCollapseId 相同时,新收到的通知会覆盖老的通知,最大 64 字节 iOS10 开始支持 + * @return + */ + apnsCollapseId?: string; + /** + * iOS 富文本推送内容的 URL,与 category 一起使用。 + * @return + */ + richMediaUri?: string; +} +export interface RCIMIWCompressOptions { + /** + * 原图压缩比 + */ + originalImageQuality?: number; + /** + * 原图最长边的最大宽度 + */ + originalImageSize?: number; + /** + * 原图大小限制 配置发送图片时,如果图片大小不超过则发送原图 + */ + originalImageMaxSize?: number; + /** + * 缩略图压缩比例 + */ + thumbnailQuality?: number; + /** + * 缩略图压缩宽、高 + */ + thumbnailMaxSize?: number; + /** + * 缩略图压缩最小宽、高 + */ + thumbnailMinSize?: number; + /** + * 小视频压缩宽度,建议使用16的倍数 + */ + sightCompressWidth?: number; + /** + * 小视频压缩高度,建议使用16的倍数 + */ + sightCompressHeight?: number; + /** + * 位置消息缩略图压缩比例 + */ + locationThumbnailQuality?: number; + /** + * 位置消息压缩的宽度 + */ + locationThumbnailWidth?: number; + /** + * 位置消息压缩的高度 + */ + locationThumbnailHeight?: number; +} +export interface RCIMIWEngineOptions { + /** + * 私有部署的导航服务器地址。 + */ + naviServer?: string; + /** + * 私有部署的媒体服务器地址,即文件和图片的上传地址。使用私有云时必须填写。 + */ + fileServer?: string; + /** + * 配置数据上传地址 + */ + statisticServer?: string; + /** + * 数据中心区域码 + */ + areaCode?: RCIMIWAreaCode; + /** + * 设置断线重连时是否踢出重连设备。 + * 用户没有开通多设备登录功能的前提下,同一个账号在一台新设备上登录的时候,会把这个账号在之前登录的设备上踢出。 + */ + kickReconnectDevice?: boolean; + /** + * 压缩项配置 + */ + compressOptions?: RCIMIWCompressOptions; + /** + * 日志级别 + */ + logLevel?: RCIMIWLogLevel; + pushOptions?: RCIMIWPushOptions; + enablePush?: boolean; + enableIPC?: boolean; +} +export interface RCIMIWConnectCallback { + onDatabaseOpened: (res: { + code: number; + }) => void; + onConnected: (res: { + code: number; + userId: string; + }) => void; +} +export interface RCIMIWSendMessageCallback { + onMessageSaved: (res: { + message: RCIMIWMessage; + }) => void; + onMessageSent: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface RCIMIWSendMediaMessageListener { + onMediaMessageSaved: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageSending: (res: { + message: RCIMIWMediaMessage; + progress: number; + }) => void; + onSendingMediaMessageCanceled: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageSent: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface RCIMIWDownloadMediaMessageListener { + onMediaMessageDownloading: (res: { + message: RCIMIWMediaMessage; + progress: number; + }) => void; + onDownloadingMediaMessageCanceled: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageDownloaded: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface RCIMIWSendGroupMessageToDesignatedUsersCallback { + onMessageSaved: (res: { + message: RCIMIWMessage; + }) => void; + onMessageSent: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface RCIMIWUnknownMessage extends RCIMIWMessage { + /** + * 消息数据 + */ + rawData?: string; + /** + * 消息的标识 + */ + objectName?: string; +} +export interface RCIMIWUserInfo { + /** + * 用户 id。 + * @return + */ + userId?: string; + /** + * 名称(昵称)。 + * @return + */ + name?: string; + /** + * 用户头像地址。 + * @return + */ + portrait?: string; + /** + * 备注 + * @return + */ + alias?: string; + /** + * 附加信息。 + * @return + */ + extra?: string; +} +export interface RCIMIWCustomMessage extends RCIMIWMessage { + /** + * 自定义消息的标识符 + */ + identifier?: string; + /** + * 自定义的消息存储策略 + * @return + */ + policy?: RCIMIWCustomMessagePolicy; + /** + * 自定义消息的键值对 + * @return + */ + fields?: Record; +} +export interface RCIMIWNativeCustomMessage extends RCIMIWMessage { + /** + * 自定义消息的内容 + */ + fields?: Record; + /** + * 自定义消息的搜索关键字 + */ + searchableWords?: string[]; + /** + * 自定义消息的唯一标识 + */ + messageIdentifier?: string; +} +export interface RCIMIWMessage { + /** + * 会话类型 + */ + conversationType?: RCIMIWConversationType; + /** + * 消息的类型 + * @return + */ + messageType?: RCIMIWMessageType; + /** + * 会话 ID + */ + targetId?: string; + /** + * 所属会话的业务标识,长度限制 20 字符 + * @return + */ + channelId?: string; + /** + * 本地数据库中存储的消息的唯一 ID 值。发送新消息时无需指定该 ID,否则会导致消息入库失败。在失败重发消息时,可以填入已入库的消息的 ID,请确保使用上一次发送失败的消息实例。 + * @return + */ + messageId?: number; + /** + * 服务器消息唯一 ID(在同一个 Appkey 下全局唯一) + */ + messageUId?: string; + /** + * 是否是离线消息,只在接收消息的回调方法中有效,如果消息为离线消息,则为 YES ,其他情况均为 NO + */ + offLine?: boolean; + /** + * 群阅读回执状态 + */ + groupReadReceiptInfo?: RCIMIWGroupReadReceiptInfo; + /** + * 消息的接收时间(Unix 时间戳、毫秒) + */ + receivedTime?: number; + /** + * 消息的发送时间(Unix 时间戳、毫秒) + */ + sentTime?: number; + /** + * 消息的接收状态 + */ + receivedStatus?: RCIMIWReceivedStatus; + /** + * 消息的发送状态 + */ + sentStatus?: RCIMIWSentStatus; + /** + * 消息的发送者 ID + */ + senderUserId?: string; + /** + * 消息的方向 + */ + direction?: RCIMIWMessageDirection; + /** + * 消息携带的用户信息 + */ + userInfo?: RCIMIWUserInfo; + /** + * 消息的 @ 信息 + * @return + */ + mentionedInfo?: RCIMIWMentionedInfo; + /** + * 消息推送配置 + */ + pushOptions?: RCIMIWMessagePushOptions; + /** + * 消息的附加字段 + */ + extra?: string; + /** + * 消息扩展信息列表,该属性在消息发送时确定,发送之后不能再做修改 + * 扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息 + * 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 4096 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300 + */ + expansion?: Record; +} +export interface RCIMIWNativeCustomMediaMessage extends RCIMIWMediaMessage { + /** + * 自定义消息的内容 + */ + fields?: Record; + /** + * 自定义消息的搜索关键字 + */ + searchableWords?: string[]; + /** + * 自定义消息的唯一标识 + */ + messageIdentifier?: string; +} +export interface RCIMIWImageMessage extends RCIMIWMediaMessage { + /** + * 图片的缩略图数据 + */ + thumbnailBase64String?: string; + /** + * 是否为原图 + */ + original?: boolean; +} +export interface RCIMIWFileMessage extends RCIMIWMediaMessage { + /** + * 文件名 + */ + name?: string; + /** + * 文件类型 + */ + fileType?: string; + /** + * 文件大小,单位为 Byte + */ + size?: number; +} +export interface RCIMIWRecallNotificationMessage extends RCIMIWMessage { + /** + * 是否是管理员操作 + */ + admin?: boolean; + /** + * 是否删除 + */ + deleted?: boolean; + /** + * 被撤回的原始消息的发送时间(毫秒) + */ + recallTime?: number; + /** + * 撤回动作的时间(毫秒) + */ + recallActionTime?: number; + /** + * 被撤回的原消息 + */ + originalMessage?: RCIMIWMessage; +} +export interface RCIMIWMediaMessage extends RCIMIWMessage { + /** + * 本地路径 + */ + local?: string; + /** + * 远端路径 + */ + remote?: string; +} +export interface RCIMIWTextMessage extends RCIMIWMessage { + /** + * 文本内容 + */ + text?: string; +} +export interface RCIMIWGIFMessage extends RCIMIWMediaMessage { + /** + * GIF 图的大小,单位字节 + */ + dataSize?: number; + /** + * GIF 图的宽 + */ + width?: number; + /** + * GIF 图的高 + */ + height?: number; +} +export interface RCIMIWCommandMessage extends RCIMIWMessage { + /** + * 命令的名称 + */ + name?: string; + /** + * 命令的扩展数据,可以为任意字符串,如存放您定义的json数据。 + */ + data?: string; +} +export interface RCIMIWVoiceMessage extends RCIMIWMediaMessage { + /** + * 语音的长度,单位:秒 + */ + duration?: number; +} +export interface RCIMIWMentionedInfo { + /** + * @ 提醒的类型 + */ + type?: RCIMIWMentionedType; + /** + * @ 的用户 ID 列表 + */ + userIdList?: string[]; + /** + * 包含 @ 提醒的消息,本地通知和远程推送显示的内容 + */ + mentionedContent?: string; +} +export interface RCIMIWCommandNotificationMessage extends RCIMIWMessage { + /** + * 命令提醒的名称 + */ + name?: string; + /** + * 命令提醒消息的扩展数据,可以为任意字符串,如存放您定义的 json 数据。 + */ + data?: string; +} +export interface RCIMIWSightMessage extends RCIMIWMediaMessage { + /** + * 视频时长 + */ + duration?: number; + /** + * 视频大小 + */ + size?: number; + /** + * 视频的名称 + */ + name?: string; + /** + * 缩略图数据 + */ + thumbnailBase64String?: string; +} +export interface RCIMIWLocationMessage extends RCIMIWMessage { + /** + * 经度信息 + * @return + */ + longitude?: number; + /** + * 纬度信息 + * @return + */ + latitude?: number; + /** + * POI 信息 + * @return + */ + poiName?: string; + /** + * 缩略图地址 + * @return + */ + thumbnailPath?: string; +} +export interface RCIMIWReferenceMessage extends RCIMIWMessage { + /** + * 引用文本 + */ + text?: string; + /** + * 被引用的消息 + */ + referenceMessage?: RCIMIWMessage; +} +export interface RCIMIWBlockedMessageInfo { + /** + * 封禁的会话类型 + */ + conversationType?: RCIMIWConversationType; + /** + * 封禁的会话 ID + */ + targetId?: string; + /** + * 封禁的消息 Uid + */ + blockedMsgUId?: string; + /** + * 封禁的类型 + */ + blockType?: RCIMIWMessageBlockType; + /** + * 封禁的附加信息 + */ + extra?: string; +} +export interface RCIMIWTypingStatus { + /** + * 当前正在输入的用户 ID + * @return + */ + userId?: string; + /** + * 当前正在输入的消息类型名,为发送方调用发送接口时传入的 currentType + * @return + */ + contentType?: string; + /** + * 输入时间 + * @return + */ + sentTime?: number; +} +export interface RCIMIWUltraGroupTypingStatusInfo { + /** + * 会话 ID + */ + targetId?: string; + /** + * 所属会话的业务标识 + */ + channelId?: string; + /** + * 用户id + * @return + */ + userId?: string; + /** + * 用户数 + * @return + */ + userNums?: number; + /** + * 输入状态 + * @return + */ + status?: RCIMIWUltraGroupTypingStatus; + /** + * 服务端收到用户操作的上行时间. + * @return + */ + timestamp?: number; +} +export interface RCIMIWGroupReadReceiptInfo { + /** + * 是否为需要回执的消息。 true: 需要回执的消息。 false: 普通消息。 + */ + readReceiptMessage?: boolean; + /** + * 是否发送过消息回执响应。 仅对消息接收方有效。 + */ + hasRespond?: boolean; + /** + * 会话中响应过该消息回执的成员 userId 列表。 key: userId value: respondTime + */ + respondUserIds?: Record; +} +export interface RCIMIWChatRoomMemberAction { + /** + * 操作的用户 + */ + userId?: string; + /** + * 事件类型 + */ + actionType?: RCIMIWChatRoomMemberActionType; +} +export interface RCIMIWSearchConversationResult { + /** + * 获取会话的实体,用来容纳和存储客户端的会话信息,对应会话列表中的会话。 + */ + conversation?: RCIMIWConversation; + /** + * 获取匹配会话数量 + */ + count?: number; +} +export interface RCIMIWConversation { + /** + * 获取会话类型 + */ + conversationType?: RCIMIWConversationType; + /** + * 会话 ID,单聊时为接收方 ID,群组会话中为群组 ID,聊天室会话中为聊天室 ID,系统会话为开发者指定的系统账号 Id + * @return + */ + targetId?: string; + /** + * 频道 ID + * @return + */ + channelId?: string; + /** + * 当前会话未读消息数量 + */ + unreadCount?: number; + /** + * 本会话里自己被 @ 的消息数量 + */ + mentionedCount?: number; + /** + * 本会话是否置顶 + */ + top?: boolean; + /** + * 会话里保存的草稿信息 + * @return + */ + draft?: string; + /** + * 获取最后一条消息 + */ + lastMessage?: RCIMIWMessage; + /** + * 会话的通知级别 + * @return + */ + notificationLevel?: RCIMIWPushNotificationLevel; + /** + * 获取会话第一条未读消息的时间戳,仅对超级群生效 + * @return + */ + firstUnreadMsgSendTime?: number; + /** + * 获取会话最后的操作时间 + * @return + */ + operationTime?: number; +} +export interface RCIMIWPushOptions { + idMI?: string; + appKeyMI?: string; + appIdMeizu?: string; + appKeyMeizu?: string; + appKeyOPPO?: string; + appSecretOPPO?: string; + enableHWPush?: boolean; + enableFCM?: boolean; + enableVIVOPush?: boolean; + enableHonorPush?: boolean; +} +export declare enum RCIMIWImportanceHW { + /** + * 表示消息为服务与通讯类。消息提醒方式为锁屏+铃声+震动。 + */ + normal = 0, + /** + * 表示消息为资讯营销类。消息提醒方式为静默通知,仅在下拉通知栏展示。 + */ + low = 1 +} +export declare enum RCIMIWMessageOperationPolicy { + /** + * 本地 + */ + local = 0, + /** + * 远端 + */ + remote = 1, + /** + * 本地和远端 + */ + localRemote = 2 +} +export declare enum RCIMIWNativeCustomMessagePersistentFlag { + /** + * 不存储,不计数 + */ + none = 0, + /** + * 在本地只存储,但不计入未读数 + */ + persisted = 1, + /** + * 在本地进行存储并计入未读数 + */ + counted = 2, + /** + * 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息。 + 一般用于发送输入状态之类的消息。 + */ + status = 3 +} +export declare enum RCIMIWVIVOPushType { + /** + * 运营消息 + */ + operate = 0, + /** + * 系统消息 + */ + system = 1 +} +export declare enum RCIMIWSentStatus { + /** + * 发送中 + */ + sending = 0, + /** + * 发送失败 + */ + failed = 1, + /** + * 已发送 + */ + sent = 2, + /** + * 对方已接收 + */ + received = 3, + /** + * 对方已读 + */ + read = 4, + /** + * 对方已销毁 + */ + destroyed = 5, + /** + * 对方已取消 + */ + canceled = 6 +} +export declare enum RCIMIWPushNotificationQuietHoursLevel { + /** + * 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。 + */ + none = 0, + /** + * 与融云服务端断开连接后,当前用户仅在指定时段内针对指定会话中提及(@)当前用户和全体群成员的消息接收通知。 + */ + mentionMessage = 1, + /** + * 当前用户在指定时段内针对任何消息都不接收推送通知。 + */ + blocked = 2 +} +export declare enum RCIMIWMessageDirection { + /** + * 发送方 + */ + send = 0, + /** + * 接收方 + */ + receive = 1 +} +export declare enum RCIMIWReceivedStatus { + /** + * 未读 + */ + unread = 0, + /** + * 已读 + */ + read = 1, + /** + * 已听 + */ + listened = 2, + /** + * 已下载 + */ + downloaded = 3, + /** + * 该消息已经被其他登录的多端收取过。(即该消息已经被其他端收取过后。当前端才登录,并重新拉取了这条消息。客户可以通过这个状态更新 UI,比如不再提示) + */ + retrieved = 4, + /** + * 该消息是被多端同时收取的。(即其他端正同时登录,一条消息被同时发往多端。客户可以通过这个状态值更新自己的某些 UI 状态)。 + */ + multipleReceive = 5 +} +export declare enum RCIMIWChatRoomMemberActionType { + /** + * 未知 + */ + unknown = 0, + /** + * 已加入 + */ + join = 1, + /** + * 已离开 + */ + leave = 2 +} +export declare enum RCIMIWPushNotificationLevel { + /** + * 与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。 + */ + allMessage = 0, + /** + * 未设置。未设置时均为此初始状态。 + */ + none = 1, + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户和全体群成员的消息接收通知。 + */ + mention = 2, + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 + */ + mentionUsers = 3, + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)全部群成员的消息接收通知。 + */ + mentionAll = 4, + /** + * 当前用户针对指定类型的会话中的任何消息都不接收推送通知。 + */ + blocked = 5 +} +export declare enum RCIMIWMessageType { + /** + * 无效类型 + */ + unknown = 0, + /** + * 自定义 + */ + custom = 1, + /** + * 文本 + */ + text = 2, + /** + * 语音 + */ + voice = 3, + /** + * 图片 + */ + image = 4, + /** + * 文件 + */ + file = 5, + /** + * 小视频 + */ + sight = 6, + /** + * GIF 图 + */ + gif = 7, + /** + * 撤回 + */ + recall = 8, + /** + * 引用 + */ + reference = 9, + /** + * 命令 + */ + command = 10, + /** + * 命令通知 + */ + commandNotification = 11, + /** + * 位置消息 + */ + location = 12, + /** + * 用户自定义消息 + */ + userCustom = 13, + /** + * 原生自定义普通消息 + */ + nativeCustom = 14, + /** + * 原生自定义媒体消息 + */ + nativeCustomMedia = 15 +} +export declare enum RCIMIWMessageBlockType { + /** + * 未知 + */ + unknown = 0, + /** + * 全局敏感词:命中了融云内置的全局敏感词 + */ + global = 1, + /** + * 自定义敏感词拦截:命中了客户在融云自定义的敏感词 + */ + custom = 2, + /** + * 第三方审核拦截:命中了第三方(数美)或模板路由决定不下发的状态 + */ + thirdParty = 3 +} +export declare enum RCIMIWTimeOrder { + /** + * 时间递减 + */ + before = 0, + /** + * 时间递增 + */ + after = 1 +} +export declare enum RCIMIWCustomMessagePolicy { + /** + * 客户端不存储,支持离线消息机制,不计入未读消息数 + */ + command = 0, + /** + * 客户端存储,支持离线消息机制,且存入服务端历史消息,计入未读消息数 + */ + normal = 1, + /** + * 客户端不存储,服务端不存储,不计入未读消息数 + */ + status = 2, + /** + * 客户端存储,支持离线消息机制,且存入服务端历史消息,不计入未读消息数 + */ + storage = 3 +} +export declare enum RCIMIWChatRoomStatus { + /** + * 聊天室被重置 + */ + reset = 0, + /** + * 用户调用IM Server API 手动销毁聊天室 + */ + destroyManual = 1, + /** + * IM Server 自动销毁聊天室 + */ + destroyAuto = 2 +} +export declare enum RCIMIWConversationType { + /** + * 暂不支持,SDK 保留类型,开发者不可使用 + */ + invalid = 0, + /** + * 单聊会话 + */ + private = 1, + /** + * 群聊会话 + */ + group = 2, + /** + * 聊天室会话 + */ + chatroom = 3, + /** + * 系统会话 + */ + system = 4, + /** + * 超级群会话 + */ + ultraGroup = 5 +} +export declare enum RCIMIWErrorCode { + success = 0, + paramError = 1, + engineDestroyed = 2, + nativeOperationError = 3, + resultUnknown = 4 +} +export declare enum RCIMIWUltraGroupTypingStatus { + /** + * 正在输入文本 + */ + text = 0 +} +export declare enum RCIMIWMentionedType { + /** + * @ 所有人 + */ + all = 0, + /** + * @ 指定的人 + */ + part = 1 +} +export declare enum RCIMIWAreaCode { + /** + * 北京数据中心,默认值 + */ + bj = 0, + /** + * 新加坡数据中心 + */ + sg = 1, + /** + * 北美数据中心 + */ + na = 2, + /** + * 新加坡 B 企业合作数据中心 + */ + sgB = 3, + /** + * 沙特数据中心 + */ + sa = 4 +} +export declare enum RCIMIWChatRoomEntriesOperationType { + /** + * 更新操作 + */ + update = 0, + /** + * 删除操作 + */ + remove = 1 +} +export declare enum RCIMIWLogLevel { + /** + * 不输出任何日志 + */ + none = 0, + /** + * 只输出错误的日志 + */ + error = 1, + /** + * 输出错误和警告的日志 + */ + warn = 2, + /** + * 输出错误、警告和一般的日志 + */ + info = 3, + /** + * 输出输出错误、警告和一般的日志以及 debug 日志 + */ + debug = 4, + /** + * 输出所有日志 + */ + verbose = 5 +} +export declare enum RCIMIWBlacklistStatus { + /** + * 未知 + */ + unknown = 0, + /** + * 在黑名单中 + */ + inBlacklist = 1, + /** + * 不在黑名单 + */ + notInBlacklist = 2 +} +export declare enum RCIMIWImportanceHonor { + /** + * 表示消息为服务与通讯类。消息提醒方式为锁屏+铃声+震动。 + */ + normal = 0, + /** + * 表示消息为资讯营销类。消息提醒方式为静默通知,仅在下拉通知栏展示。 + */ + low = 1 +} +export declare enum RCIMIWConnectionStatus { + /** + * 网络不可用 + */ + networkUnavailable = 0, + /** + * 连接成功 + */ + connected = 1, + /** + * 连接中 + */ + connecting = 2, + /** + * 未连接 + */ + unconnected = 3, + /** + * 用户账户在其他设备登录,本机会被踢掉线 + */ + kickedOfflineByOtherClient = 4, + /** + * Token 不正确 + */ + tokenIncorrect = 5, + /** + * 用户被开发者后台封禁 + */ + connUserBlocked = 6, + /** + * 用户主动调用 disconnect 或 logout 接口断开连接 + */ + signOut = 7, + /** + * 连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连 + */ + suspend = 8, + /** + * 自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接 + */ + timeout = 9, + /** + * 异常情况 + */ + unknown = 10 +} +export interface IRCIMIWConnectCallback { + onConnected: (res: { + code: number; + userId: string; + }) => void; + onDatabaseOpened: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSendMessageCallback { + onMessageSaved: (res: { + message: RCIMIWMessage; + }) => void; + onMessageSent: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface IRCIMIWSendMediaMessageListener { + onMediaMessageSaved: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageSending: (res: { + message: RCIMIWMediaMessage; + progress: number; + }) => void; + onSendingMediaMessageCanceled: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageSent: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface IRCIMIWCancelSendingMediaMessageCallback { + onCancelSendingMediaMessageCalled: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface IRCIMIWDownloadMediaMessageListener { + onMediaMessageDownloading: (res: { + message: RCIMIWMediaMessage; + progress: number; + }) => void; + onDownloadingMediaMessageCanceled: (res: { + message: RCIMIWMediaMessage; + }) => void; + onMediaMessageDownloaded: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface IRCIMIWCancelDownloadingMediaMessageCallback { + onCancelDownloadingMediaMessageCalled: (res: { + code: number; + message: RCIMIWMediaMessage; + }) => void; +} +export interface IRCIMIWGetConversationCallback { + onSuccess: (res: { + t: RCIMIWConversation; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWObjectCallback { + onSuccess: (res: { + t: T; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetConversationsCallback { + onSuccess: (res: { + t: RCIMIWConversation[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUnreadConversationsCallback { + onSuccess: (res: { + t: RCIMIWConversation[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveConversationCallback { + onConversationRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveConversationsCallback { + onConversationsRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUnreadCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetTotalUnreadCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUnreadMentionedCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupAllUnreadCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupAllUnreadMentionedCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupUnreadCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupUnreadMentionedCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUnreadCountByConversationTypesCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWClearUnreadCountCallback { + onUnreadCountCleared: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSaveDraftMessageCallback { + onDraftMessageSaved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetDraftMessageCallback { + onSuccess: (res: { + t: string; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWClearDraftMessageCallback { + onDraftMessageCleared: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetBlockedConversationsCallback { + onSuccess: (res: { + t: RCIMIWConversation[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeConversationTopStatusCallback { + onConversationTopStatusChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetConversationTopStatusCallback { + onSuccess: (res: { + t: Boolean; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSyncConversationReadStatusCallback { + onConversationReadStatusSynced: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetMessagesCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetMessageCallback { + onSuccess: (res: { + t: RCIMIWMessage; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetFirstUnreadMessageCallback { + onSuccess: (res: { + t: RCIMIWMessage; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUnreadMentionedMessagesCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWInsertMessageCallback { + onMessageInserted: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface IRCIMIWInsertMessagesCallback { + onMessagesInserted: (res: { + code: number; + messages: RCIMIWMessage[]; + }) => void; +} +export interface IRCIMIWClearMessagesCallback { + onMessagesCleared: (res: { + code: number; + }) => void; +} +export interface IRCIMIWDeleteLocalMessagesCallback { + onLocalMessagesDeleted: (res: { + code: number; + messages: RCIMIWMessage[]; + }) => void; +} +export interface IRCIMIWDeleteMessagesCallback { + onMessagesDeleted: (res: { + code: number; + messages: RCIMIWMessage[]; + }) => void; +} +export interface IRCIMIWRecallMessageCallback { + onMessageRecalled: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface IRCIMIWSendPrivateReadReceiptMessageCallback { + onPrivateReadReceiptMessageSent: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSendGroupReadReceiptRequestCallback { + onGroupReadReceiptRequestSent: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface IRCIMIWSendGroupReadReceiptResponseCallback { + onGroupReadReceiptResponseSent: (res: { + code: number; + message: RCIMIWMessage[]; + }) => void; +} +export interface IRCIMIWUpdateMessageExpansionCallback { + onMessageExpansionUpdated: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveMessageExpansionForKeysCallback { + onMessageExpansionForKeysRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeMessageSentStatusCallback { + onMessageSentStatusChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeMessageReceivedStatusCallback { + onMessageReceiveStatusChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWJoinChatRoomCallback { + onChatRoomJoined: (res: { + code: number; + targetId: string; + }) => void; +} +export interface IRCIMIWLeaveChatRoomCallback { + onChatRoomLeft: (res: { + code: number; + targetId: string; + }) => void; +} +export interface IRCIMIWGetChatRoomMessagesCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWAddChatRoomEntryCallback { + onChatRoomEntryAdded: (res: { + code: number; + }) => void; +} +export interface IRCIMIWAddChatRoomEntriesCallback { + onChatRoomEntriesAdded: (res: { + code: number; + errors: Record; + }) => void; +} +export interface IRCIMIWGetChatRoomEntryCallback { + onSuccess: (res: { + t: Record; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetChatRoomAllEntriesCallback { + onSuccess: (res: { + t: Record; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveChatRoomEntryCallback { + onChatRoomEntryRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveChatRoomEntriesCallback { + onChatRoomEntriesRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWAddToBlacklistCallback { + onBlacklistAdded: (res: { + code: number; + userId: string; + }) => void; +} +export interface IRCIMIWRemoveFromBlacklistCallback { + onBlacklistRemoved: (res: { + code: number; + userId: string; + }) => void; +} +export interface IRCIMIWGetBlacklistStatusCallback { + onSuccess: (res: { + t: RCIMIWBlacklistStatus; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetBlacklistCallback { + onSuccess: (res: { + t: string[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSearchMessagesCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSearchMessagesByTimeRangeCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSearchMessagesByUserIdCallback { + onSuccess: (res: { + t: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSearchConversationsCallback { + onSuccess: (res: { + t: RCIMIWSearchConversationResult[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeNotificationQuietHoursCallback { + onNotificationQuietHoursChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveNotificationQuietHoursCallback { + onNotificationQuietHoursRemoved: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetNotificationQuietHoursCallback { + onSuccess: (res: { + startTime: string; + spanMinutes: number; + level: RCIMIWPushNotificationQuietHoursLevel; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeConversationNotificationLevelCallback { + onConversationNotificationLevelChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetConversationNotificationLevelCallback { + onSuccess: (res: { + t: RCIMIWPushNotificationLevel; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeConversationTypeNotificationLevelCallback { + onConversationTypeNotificationLevelChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetConversationTypeNotificationLevelCallback { + onSuccess: (res: { + t: RCIMIWPushNotificationLevel; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeUltraGroupDefaultNotificationLevelCallback { + onUltraGroupDefaultNotificationLevelChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupDefaultNotificationLevelCallback { + onSuccess: (res: { + t: RCIMIWPushNotificationLevel; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangeUltraGroupChannelDefaultNotificationLevelCallback { + onUltraGroupChannelDefaultNotificationLevelChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetUltraGroupChannelDefaultNotificationLevelCallback { + onSuccess: (res: { + t: RCIMIWPushNotificationLevel; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangePushContentShowStatusCallback { + onPushContentShowStatusChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangePushLanguageCallback { + onPushLanguageChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWChangePushReceiveStatusCallback { + onPushReceiveStatusChanged: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSendGroupMessageToDesignatedUsersCallback { + onMessageSaved: (res: { + message: RCIMIWMessage; + }) => void; + onMessageSent: (res: { + code: number; + message: RCIMIWMessage; + }) => void; +} +export interface IRCIMIWGetMessageCountCallback { + onSuccess: (res: { + t: number; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetTopConversationsCallback { + onSuccess: (res: { + t: RCIMIWConversation[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSyncUltraGroupReadStatusCallback { + onUltraGroupReadStatusSynced: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetConversationsForAllChannelCallback { + onSuccess: (res: { + t: RCIMIWConversation[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWModifyUltraGroupMessageCallback { + onUltraGroupMessageModified: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRecallUltraGroupMessageCallback { + onUltraGroupMessageRecalled: (res: { + code: number; + }) => void; +} +export interface IRCIMIWClearUltraGroupMessagesCallback { + onUltraGroupMessagesCleared: (res: { + code: number; + }) => void; +} +export interface IRCIMIWSendUltraGroupTypingStatusCallback { + onUltraGroupTypingStatusSent: (res: { + code: number; + }) => void; +} +export interface IRCIMIWClearUltraGroupMessagesForAllChannelCallback { + onUltraGroupMessagesClearedForAllChannel: (res: { + code: number; + }) => void; +} +export interface IRCIMIWGetBatchRemoteUltraGroupMessagesCallback { + onSuccess: (res: { + matchedMessages: RCIMIWMessage[]; + notMatchedMessages: RCIMIWMessage[]; + }) => void; + onError: (res: { + code: number; + }) => void; +} +export interface IRCIMIWUpdateUltraGroupMessageExpansionCallback { + onUltraGroupMessageExpansionUpdated: (res: { + code: number; + }) => void; +} +export interface IRCIMIWRemoveUltraGroupMessageExpansionForKeysCallback { + onUltraGroupMessageExpansionForKeysRemoved: (res: { + code: number; + }) => void; +} +/** + * 收到消息的监听 + * @param message 接收到的消息对象 + * @param left 当客户端连接成功后,服务端会将所有补偿消息以消息包的形式下发给客户端,最多每 200 条消息为一个消息包,即一个 Package, 客户端接受到消息包后,会逐条解析并通知应用。left 为当前消息包(Package)里还剩余的消息条数 + * @param offline 消息是否离线消息 + * @param hasPackage 是否在服务端还存在未下发的消息包 + */ +export interface OnMessageReceivedResult { + message: RCIMIWMessage; + left: number; + offline: boolean; + hasPackage: boolean; +} +/** + * 网络状态变化 + * @param status SDK 与融云服务器的连接状态 + */ +export interface OnConnectionStatusChangedResult { + status: RCIMIWConnectionStatus; +} +/** + * 会话状态置顶多端同步监听 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param top 是否置顶 + */ +export interface OnConversationTopStatusSyncedResult { + type: RCIMIWConversationType; + targetId: string; + channelId: string; + top: boolean; +} +/** + * 会话状态免打扰多端同步监听 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param level 当前会话通知的类型 + */ +export interface OnConversationNotificationLevelSyncedResult { + type: RCIMIWConversationType; + targetId: string; + channelId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * 撤回消息监听器 + * @param message 原本的消息会变为撤回消息 + */ +export interface OnRemoteMessageRecalledResult { + message: RCIMIWMessage; +} +/** + * 单聊中收到消息回执的回调。 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 已阅读的最后一条消息的 sendTime + */ +export interface OnPrivateReadReceiptReceivedResult { + targetId: string; + channelId: string; + timestamp: number; +} +/** + * 消息扩展信息更改的回调 + * @param expansion 消息扩展信息中更新的键值对,只包含更新的键值对,不是全部的数据。如果想获取全部的键值对,请使用 message 的 expansion 属性。 + * @param message 发生变化的消息 + */ +export interface OnRemoteMessageExpansionUpdatedResult { + expansion: Record; + message: RCIMIWMessage; +} +/** + * 消息扩展信息删除的回调 + * @param message 发生变化的消息 + * @param keys 消息扩展信息中删除的键值对 key 列表 + */ +export interface OnRemoteMessageExpansionForKeyRemovedResult { + message: RCIMIWMessage; + keys: string[]; +} +/** + * 聊天室用户进入、退出聊天室监听 + * @param targetId 会话 ID + * @param actions 发生的事件 + */ +export interface OnChatRoomMemberChangedResult { + targetId: string; + actions: RCIMIWChatRoomMemberAction[]; +} +/** + * 会话输入状态发生变化。对于单聊而言,当对方正在输入时,监听会触发一次;当对方不处于输入状态时,该监听还会触发一次,但回调里输入用户列表为空。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param userTypingStatus 发生状态变化的集合 + */ +export interface OnTypingStatusChangedResult { + type: RCIMIWConversationType; + targetId: string; + channelId: string; + userTypingStatus: RCIMIWTypingStatus[]; +} +/** + * 同步消息未读状态监听接口。多端登录,收到其它端清除某一会话未读数通知的时候 + * @param type 会话类型 + * @param targetId 会话 ID + * @param timestamp 时间戳 + */ +export interface OnConversationReadStatusSyncMessageReceivedResult { + type: RCIMIWConversationType; + targetId: string; + timestamp: number; +} +/** + * 聊天室 KV 同步完成的回调 + * @param roomId 聊天室 ID + */ +export interface OnChatRoomEntriesSyncedResult { + roomId: string; +} +/** + * 聊天室 KV 发生变化的回调 + * @param operationType 操作的类型 + * @param roomId 聊天室 ID + * @param entries 发送变化的 KV + */ +export interface OnChatRoomEntriesChangedResult { + operationType: RCIMIWChatRoomEntriesOperationType; + roomId: string; + entries: Record; +} +/** + * 超级群消息 kv 被更新 + * @param messages 被更新的消息集合 + */ +export interface OnRemoteUltraGroupMessageExpansionUpdatedResult { + messages: RCIMIWMessage[]; +} +/** + * 超级群消息被更改 + * @param messages 被更新的消息集合 + */ +export interface OnRemoteUltraGroupMessageModifiedResult { + messages: RCIMIWMessage[]; +} +/** + * 超级群消息被撤回 + * @param messages 撤回的消息集合 + */ +export interface OnRemoteUltraGroupMessageRecalledResult { + messages: RCIMIWMessage[]; +} +/** + * 超级群已读的监听 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp + */ +export interface OnUltraGroupReadTimeReceivedResult { + targetId: string; + channelId: string; + timestamp: number; +} +/** + * 用户输入状态变化的回调 + * 当客户端收到用户输入状态的变化时,会回调此接口,通知发生变化的会话以及当前正在输入的RCUltraGroupTypingStatusInfo列表 + * @param info 正在输入的RCUltraGroupTypingStatusInfo列表(nil标示当前没有用户正在输入) + */ +export interface OnUltraGroupTypingStatusChangedResult { + info: RCIMIWUltraGroupTypingStatusInfo[]; +} +/** + * 发送含有敏感词消息被拦截的回调 + * @param info 被拦截消息的相关信息 + */ +export interface OnMessageBlockedResult { + info: RCIMIWBlockedMessageInfo; +} +/** + * 聊天室状态发生变化的监听 + * @param targetId 会话 ID + * @param status 聊天室变化的状态 + */ +export interface OnChatRoomStatusChangedResult { + targetId: string; + status: RCIMIWChatRoomStatus; +} +/** + * 收到群聊已读回执请求的监听 + * @param targetId 会话 ID + * @param messageUId 消息的 messageUid + */ +export interface OnGroupMessageReadReceiptRequestReceivedResult { + targetId: string; + messageUId: string; +} +/** + * 收到群聊已读回执响应的监听 + * @param targetId 会话 ID + * @param messageUId 收到回执响应的消息的 messageUId + * @param respondUserIds 会话中响应了此消息的用户列表。其中 key: 用户 id ; value: 响应时间。 + */ +export interface OnGroupMessageReadReceiptResponseReceivedResult { + targetId: string; + messageUId: string; + respondUserIds: Record; +} +/** + * [connect] 的接口监听,收到链接结果的回调 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userId 链接成功的用户 ID + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConnectedResult { + code: number; + userId: string; +} +/** + * [connect] 的接口监听,数据库打开时发生的回调 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnDatabaseOpenedResult { + code: number; +} +/** + * [loadConversation] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param conversation 获取到的会话 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + conversation: RCIMIWConversation; +} +/** + * [loadConversations] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用, + * @param startTime 时间戳(毫秒) + * @param count 查询的数量 + * @param conversations 查询到的会话集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationsLoadedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; + startTime: number; + count: number; + conversations: RCIMIWConversation[]; +} +/** + * [removeConversation] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationRemovedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; +} +/** + * [removeConversations] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationsRemovedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; +} +/** + * [loadTotalUnreadCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnTotalUnreadCountLoadedResult { + code: number; + channelId: string; + count: number; +} +/** + * [loadUnreadCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUnreadCountLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + count: number; +} +/** + * [loadUnreadCountByConversationTypes] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param contain 是否包含免打扰消息的未读消息数。 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUnreadCountByConversationTypesLoadedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; + contain: boolean; + count: number; +} +/** + * [loadUnreadMentionedCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUnreadMentionedCountLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + count: number; +} +/** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupAllUnreadCountLoadedResult { + code: number; + count: number; +} +/** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupAllUnreadMentionedCountLoadedResult { + code: number; + count: number; +} +/** + * 超级群列表同步完成的回调 + */ +export interface OnUltraGroupConversationsSyncedResult { +} +/** + * [clearUnreadCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 该会话已阅读的最后一条消息的发送时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUnreadCountClearedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + timestamp: number; +} +/** + * [saveDraftMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param draft 草稿信息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnDraftMessageSavedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + draft: string; +} +/** + * [clearDraftMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnDraftMessageClearedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; +} +/** + * [loadDraftMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param draft 草稿信息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnDraftMessageLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + draft: string; +} +/** + * [loadBlockedConversations] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param conversations 获取到的会话集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBlockedConversationsLoadedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; + conversations: RCIMIWConversation[]; +} +/** + * [changeConversationTopStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param top 是否置顶 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationTopStatusChangedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + top: boolean; +} +/** + * [loadConversationTopStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param top 是否置顶 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationTopStatusLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + top: boolean; +} +/** + * [syncConversationReadStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 会话中已读的最后一条消息的发送时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationReadStatusSyncedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + timestamp: number; +} +/** + * [sendMessage] 的接口监听 + * @param message 发送的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageAttachedResult { + message: RCIMIWMessage; +} +/** + * [sendMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 发送的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageSentResult { + code: number; + message: RCIMIWMessage; +} +/** + * [sendMediaMessage] 的接口监听 + * @param message 发送的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMediaMessageAttachedResult { + message: RCIMIWMediaMessage; +} +/** + * [sendMediaMessage] 的接口监听 + * @param message 发送的消息 + * @param progress 发送的进度 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMediaMessageSendingResult { + message: RCIMIWMediaMessage; + progress: number; +} +/** + * [cancelSendingMediaMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 发送的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnSendingMediaMessageCanceledResult { + code: number; + message: RCIMIWMediaMessage; +} +/** + * [sendMediaMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 发送的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMediaMessageSentResult { + code: number; + message: RCIMIWMediaMessage; +} +/** + * [downloadMediaMessage] 的接口监听 + * @param message 下载的消息 + * @param progress 下载的进度 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMediaMessageDownloadingResult { + message: RCIMIWMediaMessage; + progress: number; +} +/** + * [downloadMediaMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 下载的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMediaMessageDownloadedResult { + code: number; + message: RCIMIWMediaMessage; +} +/** + * [cancelDownloadingMediaMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 取消下载的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnDownloadingMediaMessageCanceledResult { + code: number; + message: RCIMIWMediaMessage; +} +/** + * [loadMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param sentTime 当前消息时间戳 + * @param order 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增) + * @param messages 获取到的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + sentTime: number; + order: RCIMIWTimeOrder; + messages: RCIMIWMessage[]; +} +/** + * [loadUnreadMentionedMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 获取到的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUnreadMentionedMessagesLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + messages: RCIMIWMessage[]; +} +/** + * [loadFirstUnreadMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param message 获取到的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnFirstUnreadMessageLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + message: RCIMIWMessage; +} +/** + * [insertMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 插入的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageInsertedResult { + code: number; + message: RCIMIWMessage; +} +/** + * [insertMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messages 插入的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesInsertedResult { + code: number; + messages: RCIMIWMessage[]; +} +/** + * [clearMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesClearedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + timestamp: number; +} +/** + * [deleteLocalMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messages 删除的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnLocalMessagesDeletedResult { + code: number; + messages: RCIMIWMessage[]; +} +/** + * [deleteMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 删除的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesDeletedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + messages: RCIMIWMessage[]; +} +/** + * [recallMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 撤回的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageRecalledResult { + code: number; + message: RCIMIWMessage; +} +/** + * [sendPrivateReadReceiptMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnPrivateReadReceiptMessageSentResult { + code: number; + targetId: string; + channelId: string; + timestamp: number; +} +/** + * [updateMessageExpansion] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageUId 消息的 messageUid + * @param expansion 要更新的消息扩展信息键值对,类型是 HashMap + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageExpansionUpdatedResult { + code: number; + messageUId: string; + expansion: Record; +} +/** + * [removeMessageExpansionForKeys] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageUId 消息的 messageUid + * @param keys 消息扩展信息中待删除的 key 的列表,类型是 ArrayList + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageExpansionForKeysRemovedResult { + code: number; + messageUId: string; + keys: string[]; +} +/** + * [changeMessageReceiveStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageId 消息的 messageId + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageReceiveStatusChangedResult { + code: number; + messageId: number; +} +/** + * [changeMessageSentStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageId 消息的 messageId + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageSentStatusChangedResult { + code: number; + messageId: number; +} +/** + * [joinChatRoom] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomJoinedResult { + code: number; + targetId: string; +} +/** + * 正在加入聊天室的回调 + * @param targetId 聊天室 ID + */ +export interface OnChatRoomJoiningResult { + targetId: string; +} +/** + * [leaveChatRoom] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomLeftResult { + code: number; + targetId: string; +} +/** + * [loadChatRoomMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param messages 加载到的消息 + * @param syncTime 下次拉取的时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomMessagesLoadedResult { + code: number; + targetId: string; + messages: RCIMIWMessage[]; + syncTime: number; +} +/** + * [addChatRoomEntry] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param key 聊天室属性名称 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomEntryAddedResult { + code: number; + targetId: string; + key: string; +} +/** + * [addChatRoomEntries] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param entries 聊天室属性 + * @param errorEntries 发生错误的属性 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomEntriesAddedResult { + code: number; + targetId: string; + entries: Record; + errorEntries: Record; +} +/** + * [loadChatRoomEntry] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param entry 获取到的属性。 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomEntryLoadedResult { + code: number; + targetId: string; + entry: Record; +} +/** + * [loadChatRoomAllEntries] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param entries 获取到的属性集合。 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomAllEntriesLoadedResult { + code: number; + targetId: string; + entries: Record; +} +/** + * [removeChatRoomEntry] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param key 聊天室属性键值 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomEntryRemovedResult { + code: number; + targetId: string; + key: string; +} +/** + * [removeChatRoomEntries] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param keys 聊天室属性键值集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnChatRoomEntriesRemovedResult { + code: number; + targetId: string; + keys: string[]; +} +/** + * [addToBlacklist] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userId 用户 ID + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBlacklistAddedResult { + code: number; + userId: string; +} +/** + * [removeFromBlacklist] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userId 用户 ID + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBlacklistRemovedResult { + code: number; + userId: string; +} +/** + * [loadBlacklistStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userId 用户 ID + * @param status 当前状态 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBlacklistStatusLoadedResult { + code: number; + userId: string; + status: RCIMIWBlacklistStatus; +} +/** + * [loadBlacklist] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userIds 用户 ID 集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBlacklistLoadedResult { + code: number; + userIds: string[]; +} +/** + * [searchMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 查询 beginTime 之前的消息 + * @param count 查询的数量 + * @param messages 查询到的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesSearchedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + keyword: string; + startTime: number; + count: number; + messages: RCIMIWMessage[]; +} +/** + * [searchMessagesByTimeRange] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param offset 偏移量 + * @param count 查询的数量 + * @param messages 查询到的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesSearchedByTimeRangeResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + keyword: string; + startTime: number; + endTime: number; + offset: number; + count: number; + messages: RCIMIWMessage[]; +} +/** + * [searchMessagesByUserId] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param userId 用户 id + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param startTime 查询记录的起始时间 + * @param count 查询的数量 + * @param messages 查询到的消息集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessagesSearchedByUserIdResult { + code: number; + userId: string; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + startTime: number; + count: number; + messages: RCIMIWMessage[]; +} +/** + * [searchConversations] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageTypes 搜索的消息类型 + * @param keyword 搜索的关键字 + * @param conversations 查询到的会话集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationsSearchedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; + messageTypes: RCIMIWMessageType[]; + keyword: string; + conversations: RCIMIWSearchConversationResult[]; +} +/** + * sendGroupReadReceiptRequest 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 需要请求已读回执的消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnGroupReadReceiptRequestSentResult { + code: number; + message: RCIMIWMessage; +} +/** + * [sendGroupReadReceiptResponse] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 会话中需要发送已读回执的消息列表 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnGroupReadReceiptResponseSentResult { + code: number; + targetId: string; + channelId: string; + messages: RCIMIWMessage[]; +} +/** + * [changeNotificationQuietHours] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param startTime 开始消息免打扰时间 + * @param spanMinutes 需要消息免打扰分钟数,0 < spanMinutes < 1440( 比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 spanMinutes 为 60 分钟。设置为 1439 代表全天免打扰 (23 60 + 59 = 1439 )) + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnNotificationQuietHoursChangedResult { + code: number; + startTime: string; + spanMinutes: number; + level: RCIMIWPushNotificationQuietHoursLevel; +} +/** + * [removeNotificationQuietHours] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnNotificationQuietHoursRemovedResult { + code: number; +} +/** + * [loadNotificationQuietHours] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param startTime 开始消息免打扰时间 + * @param spanMinutes 已设置的屏蔽时间分钟数,0 < spanMinutes < 1440 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnNotificationQuietHoursLoadedResult { + code: number; + startTime: string; + spanMinutes: number; + level: RCIMIWPushNotificationQuietHoursLevel; +} +/** + * [changeConversationNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationNotificationLevelChangedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [loadConversationNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param level 当前会话的消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationNotificationLevelLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [changeConversationTypeNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationTypeNotificationLevelChangedResult { + code: number; + type: RCIMIWConversationType; + level: RCIMIWPushNotificationLevel; +} +/** + * [loadConversationTypeNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationTypeNotificationLevelLoadedResult { + code: number; + type: RCIMIWConversationType; + level: RCIMIWPushNotificationLevel; +} +/** + * [changeUltraGroupDefaultNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupDefaultNotificationLevelChangedResult { + code: number; + targetId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [loadUltraGroupDefaultNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupDefaultNotificationLevelLoadedResult { + code: number; + targetId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [changeUltraGroupChannelDefaultNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupChannelDefaultNotificationLevelChangedResult { + code: number; + targetId: string; + channelId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [loadUltraGroupChannelDefaultNotificationLevel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param level 消息通知级别 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupChannelDefaultNotificationLevelLoadedResult { + code: number; + targetId: string; + channelId: string; + level: RCIMIWPushNotificationLevel; +} +/** + * [changePushContentShowStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param showContent 是否显示远程推送内容 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnPushContentShowStatusChangedResult { + code: number; + showContent: boolean; +} +/** + * [changePushLanguage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param language 推送语言 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnPushLanguageChangedResult { + code: number; + language: string; +} +/** + * [changePushReceiveStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param receive 是否接收 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnPushReceiveStatusChangedResult { + code: number; + receive: boolean; +} +/** + * [loadMessageCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param count 消息的数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnMessageCountLoadedResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + channelId: string; + count: number; +} +/** + * [loadTopConversations] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param conversations 加载的会话集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnTopConversationsLoadedResult { + code: number; + conversationTypes: RCIMIWConversationType[]; + channelId: string; + conversations: RCIMIWConversation[]; +} +/** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息存入数据库的回调 + * @param message 发送的消息内容 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnGroupMessageToDesignatedUsersAttachedResult { + message: RCIMIWMessage; +} +/** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息发送完成的回调 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 发送的消息内容 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnGroupMessageToDesignatedUsersSentResult { + code: number; + message: RCIMIWMessage; +} +/** + * [syncUltraGroupReadStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 已读时间 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupReadStatusSyncedResult { + code: number; + targetId: string; + channelId: string; + timestamp: number; +} +/** + * [loadConversationsForAllChannel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param type 会话类型 + * @param targetId 会话 ID + * @param conversations 获取到的会话集合 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnConversationsLoadedForAllChannelResult { + code: number; + type: RCIMIWConversationType; + targetId: string; + conversations: RCIMIWConversation[]; +} +/** + * [loadUltraGroupUnreadMentionedCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupUnreadMentionedCountLoadedResult { + code: number; + targetId: string; + count: number; +} +/** + * [loadUltraGroupUnreadCount] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param count 未读数量 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupUnreadCountLoadedResult { + code: number; + targetId: string; + count: number; +} +/** + * [modifyUltraGroupMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageUId 消息的 messageUid + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessageModifiedResult { + code: number; + messageUId: string; +} +/** + * [recallUltraGroupMessage] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param message 撤回的消息 + * @param deleteRemote 调用接口时传入的是否删除远端消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessageRecalledResult { + code: number; + message: RCIMIWMessage; + deleteRemote: boolean; +} +/** + * [clearUltraGroupMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 时间戳 + * @param policy 清除策略 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessagesClearedResult { + code: number; + targetId: string; + channelId: string; + timestamp: number; + policy: RCIMIWMessageOperationPolicy; +} +/** + * [clearUltraGroupMessagesForAllChannel] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param timestamp 时间戳 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessagesClearedForAllChannelResult { + code: number; + targetId: string; + timestamp: number; +} +/** + * [sendUltraGroupTypingStatus] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param typingStatus 输入状态枚举 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupTypingStatusSentResult { + code: number; + targetId: string; + channelId: string; + typingStatus: RCIMIWUltraGroupTypingStatus; +} +/** + * [loadBatchRemoteUltraGroupMessages] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param matchedMessages 从服务获取的消息列表 + * @param notMatchedMessages 非法参数或者从服务没有拿到对应消息 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnBatchRemoteUltraGroupMessagesLoadedResult { + code: number; + matchedMessages: RCIMIWMessage[]; + notMatchedMessages: RCIMIWMessage[]; +} +/** + * [updateUltraGroupMessageExpansion] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param expansion 更新的消息扩展信息键值对 + * @param messageUId 消息的 messageUid + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessageExpansionUpdatedResult { + code: number; + expansion: Record; + messageUId: string; +} +/** + * [removeUltraGroupMessageExpansionForKeys] 的接口监听 + * @param code 接口回调的状态码,0 代表成功,非 0 代表出现异常 + * @param messageUId 消息的 messageUid + * @param keys 消息扩展信息中待删除的 key 的列表 + * @deprecated 请使用对应接口提供的 callback 获取结果。 + */ +export interface OnUltraGroupMessageExpansionForKeysRemovedResult { + code: number; + messageUId: string; + keys: string[]; +} diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.js b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.js new file mode 100644 index 0000000..d599d90 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMDefines.js @@ -0,0 +1,548 @@ +export var RCIMIWPushType; +(function (RCIMIWPushType) { + /** + * iOS + */ + RCIMIWPushType[RCIMIWPushType["iOS"] = 0] = "iOS"; + /** + * 未知类型 + */ + RCIMIWPushType[RCIMIWPushType["unknown"] = 1] = "unknown"; + /** + * 融云自己的,不再使用 + */ + RCIMIWPushType[RCIMIWPushType["rong"] = 2] = "rong"; + /** + * 华为推送 + */ + RCIMIWPushType[RCIMIWPushType["huawei"] = 3] = "huawei"; + /** + * 小米推送 + */ + RCIMIWPushType[RCIMIWPushType["xiaomi"] = 4] = "xiaomi"; + /** + * FCM 推送 + */ + RCIMIWPushType[RCIMIWPushType["googleFCM"] = 5] = "googleFCM"; + /** + * GCM 推送 + */ + RCIMIWPushType[RCIMIWPushType["googleGCM"] = 6] = "googleGCM"; + /** + * 魅族推送 + */ + RCIMIWPushType[RCIMIWPushType["meizu"] = 7] = "meizu"; + /** + * VIVO 推送 + */ + RCIMIWPushType[RCIMIWPushType["vivo"] = 8] = "vivo"; + /** + * OPPO 推送 + */ + RCIMIWPushType[RCIMIWPushType["oppo"] = 9] = "oppo"; + /** + * 华为荣耀推送 + */ + RCIMIWPushType[RCIMIWPushType["honor"] = 10] = "honor"; +})(RCIMIWPushType || (RCIMIWPushType = {})); +export var RCIMIWImportanceHW; +(function (RCIMIWImportanceHW) { + /** + * 表示消息为服务与通讯类。消息提醒方式为锁屏+铃声+震动。 + */ + RCIMIWImportanceHW[RCIMIWImportanceHW["normal"] = 0] = "normal"; + /** + * 表示消息为资讯营销类。消息提醒方式为静默通知,仅在下拉通知栏展示。 + */ + RCIMIWImportanceHW[RCIMIWImportanceHW["low"] = 1] = "low"; +})(RCIMIWImportanceHW || (RCIMIWImportanceHW = {})); +export var RCIMIWMessageOperationPolicy; +(function (RCIMIWMessageOperationPolicy) { + /** + * 本地 + */ + RCIMIWMessageOperationPolicy[RCIMIWMessageOperationPolicy["local"] = 0] = "local"; + /** + * 远端 + */ + RCIMIWMessageOperationPolicy[RCIMIWMessageOperationPolicy["remote"] = 1] = "remote"; + /** + * 本地和远端 + */ + RCIMIWMessageOperationPolicy[RCIMIWMessageOperationPolicy["localRemote"] = 2] = "localRemote"; +})(RCIMIWMessageOperationPolicy || (RCIMIWMessageOperationPolicy = {})); +export var RCIMIWNativeCustomMessagePersistentFlag; +(function (RCIMIWNativeCustomMessagePersistentFlag) { + /** + * 不存储,不计数 + */ + RCIMIWNativeCustomMessagePersistentFlag[RCIMIWNativeCustomMessagePersistentFlag["none"] = 0] = "none"; + /** + * 在本地只存储,但不计入未读数 + */ + RCIMIWNativeCustomMessagePersistentFlag[RCIMIWNativeCustomMessagePersistentFlag["persisted"] = 1] = "persisted"; + /** + * 在本地进行存储并计入未读数 + */ + RCIMIWNativeCustomMessagePersistentFlag[RCIMIWNativeCustomMessagePersistentFlag["counted"] = 2] = "counted"; + /** + * 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息。 + 一般用于发送输入状态之类的消息。 + */ + RCIMIWNativeCustomMessagePersistentFlag[RCIMIWNativeCustomMessagePersistentFlag["status"] = 3] = "status"; +})(RCIMIWNativeCustomMessagePersistentFlag || (RCIMIWNativeCustomMessagePersistentFlag = {})); +export var RCIMIWVIVOPushType; +(function (RCIMIWVIVOPushType) { + /** + * 运营消息 + */ + RCIMIWVIVOPushType[RCIMIWVIVOPushType["operate"] = 0] = "operate"; + /** + * 系统消息 + */ + RCIMIWVIVOPushType[RCIMIWVIVOPushType["system"] = 1] = "system"; +})(RCIMIWVIVOPushType || (RCIMIWVIVOPushType = {})); +export var RCIMIWSentStatus; +(function (RCIMIWSentStatus) { + /** + * 发送中 + */ + RCIMIWSentStatus[RCIMIWSentStatus["sending"] = 0] = "sending"; + /** + * 发送失败 + */ + RCIMIWSentStatus[RCIMIWSentStatus["failed"] = 1] = "failed"; + /** + * 已发送 + */ + RCIMIWSentStatus[RCIMIWSentStatus["sent"] = 2] = "sent"; + /** + * 对方已接收 + */ + RCIMIWSentStatus[RCIMIWSentStatus["received"] = 3] = "received"; + /** + * 对方已读 + */ + RCIMIWSentStatus[RCIMIWSentStatus["read"] = 4] = "read"; + /** + * 对方已销毁 + */ + RCIMIWSentStatus[RCIMIWSentStatus["destroyed"] = 5] = "destroyed"; + /** + * 对方已取消 + */ + RCIMIWSentStatus[RCIMIWSentStatus["canceled"] = 6] = "canceled"; +})(RCIMIWSentStatus || (RCIMIWSentStatus = {})); +export var RCIMIWPushNotificationQuietHoursLevel; +(function (RCIMIWPushNotificationQuietHoursLevel) { + /** + * 未设置。如未设置,SDK 会依次查询消息所属群的用户级别免打扰设置及其他非用户级别设置,再判断是否需要推送通知。 + */ + RCIMIWPushNotificationQuietHoursLevel[RCIMIWPushNotificationQuietHoursLevel["none"] = 0] = "none"; + /** + * 与融云服务端断开连接后,当前用户仅在指定时段内针对指定会话中提及(@)当前用户和全体群成员的消息接收通知。 + */ + RCIMIWPushNotificationQuietHoursLevel[RCIMIWPushNotificationQuietHoursLevel["mentionMessage"] = 1] = "mentionMessage"; + /** + * 当前用户在指定时段内针对任何消息都不接收推送通知。 + */ + RCIMIWPushNotificationQuietHoursLevel[RCIMIWPushNotificationQuietHoursLevel["blocked"] = 2] = "blocked"; +})(RCIMIWPushNotificationQuietHoursLevel || (RCIMIWPushNotificationQuietHoursLevel = {})); +export var RCIMIWMessageDirection; +(function (RCIMIWMessageDirection) { + /** + * 发送方 + */ + RCIMIWMessageDirection[RCIMIWMessageDirection["send"] = 0] = "send"; + /** + * 接收方 + */ + RCIMIWMessageDirection[RCIMIWMessageDirection["receive"] = 1] = "receive"; +})(RCIMIWMessageDirection || (RCIMIWMessageDirection = {})); +export var RCIMIWReceivedStatus; +(function (RCIMIWReceivedStatus) { + /** + * 未读 + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["unread"] = 0] = "unread"; + /** + * 已读 + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["read"] = 1] = "read"; + /** + * 已听 + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["listened"] = 2] = "listened"; + /** + * 已下载 + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["downloaded"] = 3] = "downloaded"; + /** + * 该消息已经被其他登录的多端收取过。(即该消息已经被其他端收取过后。当前端才登录,并重新拉取了这条消息。客户可以通过这个状态更新 UI,比如不再提示) + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["retrieved"] = 4] = "retrieved"; + /** + * 该消息是被多端同时收取的。(即其他端正同时登录,一条消息被同时发往多端。客户可以通过这个状态值更新自己的某些 UI 状态)。 + */ + RCIMIWReceivedStatus[RCIMIWReceivedStatus["multipleReceive"] = 5] = "multipleReceive"; +})(RCIMIWReceivedStatus || (RCIMIWReceivedStatus = {})); +export var RCIMIWChatRoomMemberActionType; +(function (RCIMIWChatRoomMemberActionType) { + /** + * 未知 + */ + RCIMIWChatRoomMemberActionType[RCIMIWChatRoomMemberActionType["unknown"] = 0] = "unknown"; + /** + * 已加入 + */ + RCIMIWChatRoomMemberActionType[RCIMIWChatRoomMemberActionType["join"] = 1] = "join"; + /** + * 已离开 + */ + RCIMIWChatRoomMemberActionType[RCIMIWChatRoomMemberActionType["leave"] = 2] = "leave"; +})(RCIMIWChatRoomMemberActionType || (RCIMIWChatRoomMemberActionType = {})); +export var RCIMIWPushNotificationLevel; +(function (RCIMIWPushNotificationLevel) { + /** + * 与融云服务端断开连接后,当前用户可针对指定类型会话中的所有消息接收通知。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["allMessage"] = 0] = "allMessage"; + /** + * 未设置。未设置时均为此初始状态。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["none"] = 1] = "none"; + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户和全体群成员的消息接收通知。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["mention"] = 2] = "mention"; + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)当前用户的消息接收通知。例如:张三只会接收 “@张三 Hello” 的消息的通知。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["mentionUsers"] = 3] = "mentionUsers"; + /** + * 与融云服务端断开连接后,当前用户仅针对指定类型的会话中提及(@)全部群成员的消息接收通知。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["mentionAll"] = 4] = "mentionAll"; + /** + * 当前用户针对指定类型的会话中的任何消息都不接收推送通知。 + */ + RCIMIWPushNotificationLevel[RCIMIWPushNotificationLevel["blocked"] = 5] = "blocked"; +})(RCIMIWPushNotificationLevel || (RCIMIWPushNotificationLevel = {})); +export var RCIMIWMessageType; +(function (RCIMIWMessageType) { + /** + * 无效类型 + */ + RCIMIWMessageType[RCIMIWMessageType["unknown"] = 0] = "unknown"; + /** + * 自定义 + */ + RCIMIWMessageType[RCIMIWMessageType["custom"] = 1] = "custom"; + /** + * 文本 + */ + RCIMIWMessageType[RCIMIWMessageType["text"] = 2] = "text"; + /** + * 语音 + */ + RCIMIWMessageType[RCIMIWMessageType["voice"] = 3] = "voice"; + /** + * 图片 + */ + RCIMIWMessageType[RCIMIWMessageType["image"] = 4] = "image"; + /** + * 文件 + */ + RCIMIWMessageType[RCIMIWMessageType["file"] = 5] = "file"; + /** + * 小视频 + */ + RCIMIWMessageType[RCIMIWMessageType["sight"] = 6] = "sight"; + /** + * GIF 图 + */ + RCIMIWMessageType[RCIMIWMessageType["gif"] = 7] = "gif"; + /** + * 撤回 + */ + RCIMIWMessageType[RCIMIWMessageType["recall"] = 8] = "recall"; + /** + * 引用 + */ + RCIMIWMessageType[RCIMIWMessageType["reference"] = 9] = "reference"; + /** + * 命令 + */ + RCIMIWMessageType[RCIMIWMessageType["command"] = 10] = "command"; + /** + * 命令通知 + */ + RCIMIWMessageType[RCIMIWMessageType["commandNotification"] = 11] = "commandNotification"; + /** + * 位置消息 + */ + RCIMIWMessageType[RCIMIWMessageType["location"] = 12] = "location"; + /** + * 用户自定义消息 + */ + RCIMIWMessageType[RCIMIWMessageType["userCustom"] = 13] = "userCustom"; + /** + * 原生自定义普通消息 + */ + RCIMIWMessageType[RCIMIWMessageType["nativeCustom"] = 14] = "nativeCustom"; + /** + * 原生自定义媒体消息 + */ + RCIMIWMessageType[RCIMIWMessageType["nativeCustomMedia"] = 15] = "nativeCustomMedia"; +})(RCIMIWMessageType || (RCIMIWMessageType = {})); +export var RCIMIWMessageBlockType; +(function (RCIMIWMessageBlockType) { + /** + * 未知 + */ + RCIMIWMessageBlockType[RCIMIWMessageBlockType["unknown"] = 0] = "unknown"; + /** + * 全局敏感词:命中了融云内置的全局敏感词 + */ + RCIMIWMessageBlockType[RCIMIWMessageBlockType["global"] = 1] = "global"; + /** + * 自定义敏感词拦截:命中了客户在融云自定义的敏感词 + */ + RCIMIWMessageBlockType[RCIMIWMessageBlockType["custom"] = 2] = "custom"; + /** + * 第三方审核拦截:命中了第三方(数美)或模板路由决定不下发的状态 + */ + RCIMIWMessageBlockType[RCIMIWMessageBlockType["thirdParty"] = 3] = "thirdParty"; +})(RCIMIWMessageBlockType || (RCIMIWMessageBlockType = {})); +export var RCIMIWTimeOrder; +(function (RCIMIWTimeOrder) { + /** + * 时间递减 + */ + RCIMIWTimeOrder[RCIMIWTimeOrder["before"] = 0] = "before"; + /** + * 时间递增 + */ + RCIMIWTimeOrder[RCIMIWTimeOrder["after"] = 1] = "after"; +})(RCIMIWTimeOrder || (RCIMIWTimeOrder = {})); +export var RCIMIWCustomMessagePolicy; +(function (RCIMIWCustomMessagePolicy) { + /** + * 客户端不存储,支持离线消息机制,不计入未读消息数 + */ + RCIMIWCustomMessagePolicy[RCIMIWCustomMessagePolicy["command"] = 0] = "command"; + /** + * 客户端存储,支持离线消息机制,且存入服务端历史消息,计入未读消息数 + */ + RCIMIWCustomMessagePolicy[RCIMIWCustomMessagePolicy["normal"] = 1] = "normal"; + /** + * 客户端不存储,服务端不存储,不计入未读消息数 + */ + RCIMIWCustomMessagePolicy[RCIMIWCustomMessagePolicy["status"] = 2] = "status"; + /** + * 客户端存储,支持离线消息机制,且存入服务端历史消息,不计入未读消息数 + */ + RCIMIWCustomMessagePolicy[RCIMIWCustomMessagePolicy["storage"] = 3] = "storage"; +})(RCIMIWCustomMessagePolicy || (RCIMIWCustomMessagePolicy = {})); +export var RCIMIWChatRoomStatus; +(function (RCIMIWChatRoomStatus) { + /** + * 聊天室被重置 + */ + RCIMIWChatRoomStatus[RCIMIWChatRoomStatus["reset"] = 0] = "reset"; + /** + * 用户调用IM Server API 手动销毁聊天室 + */ + RCIMIWChatRoomStatus[RCIMIWChatRoomStatus["destroyManual"] = 1] = "destroyManual"; + /** + * IM Server 自动销毁聊天室 + */ + RCIMIWChatRoomStatus[RCIMIWChatRoomStatus["destroyAuto"] = 2] = "destroyAuto"; +})(RCIMIWChatRoomStatus || (RCIMIWChatRoomStatus = {})); +export var RCIMIWConversationType; +(function (RCIMIWConversationType) { + /** + * 暂不支持,SDK 保留类型,开发者不可使用 + */ + RCIMIWConversationType[RCIMIWConversationType["invalid"] = 0] = "invalid"; + /** + * 单聊会话 + */ + RCIMIWConversationType[RCIMIWConversationType["private"] = 1] = "private"; + /** + * 群聊会话 + */ + RCIMIWConversationType[RCIMIWConversationType["group"] = 2] = "group"; + /** + * 聊天室会话 + */ + RCIMIWConversationType[RCIMIWConversationType["chatroom"] = 3] = "chatroom"; + /** + * 系统会话 + */ + RCIMIWConversationType[RCIMIWConversationType["system"] = 4] = "system"; + /** + * 超级群会话 + */ + RCIMIWConversationType[RCIMIWConversationType["ultraGroup"] = 5] = "ultraGroup"; +})(RCIMIWConversationType || (RCIMIWConversationType = {})); +export var RCIMIWErrorCode; +(function (RCIMIWErrorCode) { + RCIMIWErrorCode[RCIMIWErrorCode["success"] = 0] = "success"; + RCIMIWErrorCode[RCIMIWErrorCode["paramError"] = 1] = "paramError"; + RCIMIWErrorCode[RCIMIWErrorCode["engineDestroyed"] = 2] = "engineDestroyed"; + RCIMIWErrorCode[RCIMIWErrorCode["nativeOperationError"] = 3] = "nativeOperationError"; + RCIMIWErrorCode[RCIMIWErrorCode["resultUnknown"] = 4] = "resultUnknown"; +})(RCIMIWErrorCode || (RCIMIWErrorCode = {})); +export var RCIMIWUltraGroupTypingStatus; +(function (RCIMIWUltraGroupTypingStatus) { + /** + * 正在输入文本 + */ + RCIMIWUltraGroupTypingStatus[RCIMIWUltraGroupTypingStatus["text"] = 0] = "text"; +})(RCIMIWUltraGroupTypingStatus || (RCIMIWUltraGroupTypingStatus = {})); +export var RCIMIWMentionedType; +(function (RCIMIWMentionedType) { + /** + * @ 所有人 + */ + RCIMIWMentionedType[RCIMIWMentionedType["all"] = 0] = "all"; + /** + * @ 指定的人 + */ + RCIMIWMentionedType[RCIMIWMentionedType["part"] = 1] = "part"; +})(RCIMIWMentionedType || (RCIMIWMentionedType = {})); +export var RCIMIWAreaCode; +(function (RCIMIWAreaCode) { + /** + * 北京数据中心,默认值 + */ + RCIMIWAreaCode[RCIMIWAreaCode["bj"] = 0] = "bj"; + /** + * 新加坡数据中心 + */ + RCIMIWAreaCode[RCIMIWAreaCode["sg"] = 1] = "sg"; + /** + * 北美数据中心 + */ + RCIMIWAreaCode[RCIMIWAreaCode["na"] = 2] = "na"; + /** + * 新加坡 B 企业合作数据中心 + */ + RCIMIWAreaCode[RCIMIWAreaCode["sgB"] = 3] = "sgB"; + /** + * 沙特数据中心 + */ + RCIMIWAreaCode[RCIMIWAreaCode["sa"] = 4] = "sa"; +})(RCIMIWAreaCode || (RCIMIWAreaCode = {})); +export var RCIMIWChatRoomEntriesOperationType; +(function (RCIMIWChatRoomEntriesOperationType) { + /** + * 更新操作 + */ + RCIMIWChatRoomEntriesOperationType[RCIMIWChatRoomEntriesOperationType["update"] = 0] = "update"; + /** + * 删除操作 + */ + RCIMIWChatRoomEntriesOperationType[RCIMIWChatRoomEntriesOperationType["remove"] = 1] = "remove"; +})(RCIMIWChatRoomEntriesOperationType || (RCIMIWChatRoomEntriesOperationType = {})); +export var RCIMIWLogLevel; +(function (RCIMIWLogLevel) { + /** + * 不输出任何日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["none"] = 0] = "none"; + /** + * 只输出错误的日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["error"] = 1] = "error"; + /** + * 输出错误和警告的日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["warn"] = 2] = "warn"; + /** + * 输出错误、警告和一般的日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["info"] = 3] = "info"; + /** + * 输出输出错误、警告和一般的日志以及 debug 日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["debug"] = 4] = "debug"; + /** + * 输出所有日志 + */ + RCIMIWLogLevel[RCIMIWLogLevel["verbose"] = 5] = "verbose"; +})(RCIMIWLogLevel || (RCIMIWLogLevel = {})); +export var RCIMIWBlacklistStatus; +(function (RCIMIWBlacklistStatus) { + /** + * 未知 + */ + RCIMIWBlacklistStatus[RCIMIWBlacklistStatus["unknown"] = 0] = "unknown"; + /** + * 在黑名单中 + */ + RCIMIWBlacklistStatus[RCIMIWBlacklistStatus["inBlacklist"] = 1] = "inBlacklist"; + /** + * 不在黑名单 + */ + RCIMIWBlacklistStatus[RCIMIWBlacklistStatus["notInBlacklist"] = 2] = "notInBlacklist"; +})(RCIMIWBlacklistStatus || (RCIMIWBlacklistStatus = {})); +export var RCIMIWImportanceHonor; +(function (RCIMIWImportanceHonor) { + /** + * 表示消息为服务与通讯类。消息提醒方式为锁屏+铃声+震动。 + */ + RCIMIWImportanceHonor[RCIMIWImportanceHonor["normal"] = 0] = "normal"; + /** + * 表示消息为资讯营销类。消息提醒方式为静默通知,仅在下拉通知栏展示。 + */ + RCIMIWImportanceHonor[RCIMIWImportanceHonor["low"] = 1] = "low"; +})(RCIMIWImportanceHonor || (RCIMIWImportanceHonor = {})); +export var RCIMIWConnectionStatus; +(function (RCIMIWConnectionStatus) { + /** + * 网络不可用 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["networkUnavailable"] = 0] = "networkUnavailable"; + /** + * 连接成功 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["connected"] = 1] = "connected"; + /** + * 连接中 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["connecting"] = 2] = "connecting"; + /** + * 未连接 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["unconnected"] = 3] = "unconnected"; + /** + * 用户账户在其他设备登录,本机会被踢掉线 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["kickedOfflineByOtherClient"] = 4] = "kickedOfflineByOtherClient"; + /** + * Token 不正确 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["tokenIncorrect"] = 5] = "tokenIncorrect"; + /** + * 用户被开发者后台封禁 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["connUserBlocked"] = 6] = "connUserBlocked"; + /** + * 用户主动调用 disconnect 或 logout 接口断开连接 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["signOut"] = 7] = "signOut"; + /** + * 连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["suspend"] = 8] = "suspend"; + /** + * 自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["timeout"] = 9] = "timeout"; + /** + * 异常情况 + */ + RCIMIWConnectionStatus[RCIMIWConnectionStatus["unknown"] = 10] = "unknown"; +})(RCIMIWConnectionStatus || (RCIMIWConnectionStatus = {})); diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.d.ts b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.d.ts new file mode 100644 index 0000000..3151d8c --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.d.ts @@ -0,0 +1,1766 @@ +import { RCIMIWPushType, RCIMIWEngineOptions } from './RCIMDefines'; +import { IRCIMIWAddChatRoomEntriesCallback, IRCIMIWAddChatRoomEntryCallback, IRCIMIWAddToBlacklistCallback, IRCIMIWCancelDownloadingMediaMessageCallback, IRCIMIWCancelSendingMediaMessageCallback, IRCIMIWChangeConversationNotificationLevelCallback, IRCIMIWChangeConversationTopStatusCallback, IRCIMIWChangeConversationTypeNotificationLevelCallback, IRCIMIWChangeMessageReceivedStatusCallback, IRCIMIWChangeMessageSentStatusCallback, IRCIMIWChangeNotificationQuietHoursCallback, IRCIMIWChangePushContentShowStatusCallback, IRCIMIWChangePushLanguageCallback, IRCIMIWChangePushReceiveStatusCallback, IRCIMIWChangeUltraGroupChannelDefaultNotificationLevelCallback, IRCIMIWChangeUltraGroupDefaultNotificationLevelCallback, IRCIMIWClearDraftMessageCallback, IRCIMIWClearMessagesCallback, IRCIMIWClearUltraGroupMessagesCallback, IRCIMIWClearUltraGroupMessagesForAllChannelCallback, IRCIMIWClearUnreadCountCallback, IRCIMIWDeleteLocalMessagesCallback, IRCIMIWDeleteMessagesCallback, IRCIMIWGetBatchRemoteUltraGroupMessagesCallback, IRCIMIWGetBlacklistCallback, IRCIMIWGetBlacklistStatusCallback, IRCIMIWGetBlockedConversationsCallback, IRCIMIWGetChatRoomAllEntriesCallback, IRCIMIWGetChatRoomEntryCallback, IRCIMIWGetChatRoomMessagesCallback, IRCIMIWGetConversationCallback, IRCIMIWGetConversationNotificationLevelCallback, IRCIMIWGetConversationTopStatusCallback, IRCIMIWGetConversationTypeNotificationLevelCallback, IRCIMIWGetConversationsCallback, IRCIMIWGetConversationsForAllChannelCallback, IRCIMIWGetDraftMessageCallback, IRCIMIWGetFirstUnreadMessageCallback, IRCIMIWGetMessageCallback, IRCIMIWGetMessageCountCallback, IRCIMIWGetMessagesCallback, IRCIMIWGetNotificationQuietHoursCallback, IRCIMIWGetTopConversationsCallback, IRCIMIWGetTotalUnreadCountCallback, IRCIMIWGetUltraGroupAllUnreadCountCallback, IRCIMIWGetUltraGroupAllUnreadMentionedCountCallback, IRCIMIWGetUltraGroupChannelDefaultNotificationLevelCallback, IRCIMIWGetUltraGroupDefaultNotificationLevelCallback, IRCIMIWGetUltraGroupUnreadCountCallback, IRCIMIWGetUltraGroupUnreadMentionedCountCallback, IRCIMIWGetUnreadConversationsCallback, IRCIMIWGetUnreadCountByConversationTypesCallback, IRCIMIWGetUnreadCountCallback, IRCIMIWGetUnreadMentionedCountCallback, IRCIMIWGetUnreadMentionedMessagesCallback, IRCIMIWInsertMessageCallback, IRCIMIWInsertMessagesCallback, IRCIMIWJoinChatRoomCallback, IRCIMIWLeaveChatRoomCallback, IRCIMIWModifyUltraGroupMessageCallback, IRCIMIWRecallMessageCallback, IRCIMIWRecallUltraGroupMessageCallback, IRCIMIWRemoveChatRoomEntriesCallback, IRCIMIWRemoveChatRoomEntryCallback, IRCIMIWRemoveConversationCallback, IRCIMIWRemoveConversationsCallback, IRCIMIWRemoveFromBlacklistCallback, IRCIMIWRemoveMessageExpansionForKeysCallback, IRCIMIWRemoveNotificationQuietHoursCallback, IRCIMIWRemoveUltraGroupMessageExpansionForKeysCallback, IRCIMIWSaveDraftMessageCallback, IRCIMIWSearchConversationsCallback, IRCIMIWSearchMessagesByTimeRangeCallback, IRCIMIWSearchMessagesByUserIdCallback, IRCIMIWSearchMessagesCallback, IRCIMIWSendGroupReadReceiptRequestCallback, IRCIMIWSendGroupReadReceiptResponseCallback, IRCIMIWSendPrivateReadReceiptMessageCallback, IRCIMIWSendUltraGroupTypingStatusCallback, IRCIMIWSyncConversationReadStatusCallback, IRCIMIWSyncUltraGroupReadStatusCallback, IRCIMIWUpdateMessageExpansionCallback, IRCIMIWUpdateUltraGroupMessageExpansionCallback, OnBatchRemoteUltraGroupMessagesLoadedResult, OnBlacklistAddedResult, OnBlacklistLoadedResult, OnBlacklistRemovedResult, OnBlacklistStatusLoadedResult, OnBlockedConversationsLoadedResult, OnChatRoomAllEntriesLoadedResult, OnChatRoomEntriesAddedResult, OnChatRoomEntriesChangedResult, OnChatRoomEntriesRemovedResult, OnChatRoomEntriesSyncedResult, OnChatRoomEntryAddedResult, OnChatRoomEntryLoadedResult, OnChatRoomEntryRemovedResult, OnChatRoomJoinedResult, OnChatRoomJoiningResult, OnChatRoomLeftResult, OnChatRoomMemberChangedResult, OnChatRoomMessagesLoadedResult, OnChatRoomStatusChangedResult, OnConnectedResult, OnConnectionStatusChangedResult, OnConversationLoadedResult, OnConversationNotificationLevelChangedResult, OnConversationNotificationLevelLoadedResult, OnConversationNotificationLevelSyncedResult, OnConversationReadStatusSyncMessageReceivedResult, OnConversationReadStatusSyncedResult, OnConversationRemovedResult, OnConversationTopStatusChangedResult, OnConversationTopStatusLoadedResult, OnConversationTopStatusSyncedResult, OnConversationTypeNotificationLevelChangedResult, OnConversationTypeNotificationLevelLoadedResult, OnConversationsLoadedForAllChannelResult, OnConversationsLoadedResult, OnConversationsRemovedResult, OnConversationsSearchedResult, OnDatabaseOpenedResult, OnDownloadingMediaMessageCanceledResult, OnDraftMessageClearedResult, OnDraftMessageLoadedResult, OnDraftMessageSavedResult, OnFirstUnreadMessageLoadedResult, OnGroupMessageReadReceiptRequestReceivedResult, OnGroupMessageReadReceiptResponseReceivedResult, OnGroupMessageToDesignatedUsersAttachedResult, OnGroupMessageToDesignatedUsersSentResult, OnGroupReadReceiptRequestSentResult, OnGroupReadReceiptResponseSentResult, OnLocalMessagesDeletedResult, OnMediaMessageAttachedResult, OnMediaMessageDownloadedResult, OnMediaMessageDownloadingResult, OnMediaMessageSendingResult, OnMediaMessageSentResult, OnMessageAttachedResult, OnMessageBlockedResult, OnMessageCountLoadedResult, OnMessageExpansionForKeysRemovedResult, OnMessageExpansionUpdatedResult, OnMessageInsertedResult, OnMessageRecalledResult, OnMessageReceiveStatusChangedResult, OnMessageReceivedResult, OnMessageSentResult, OnMessageSentStatusChangedResult, OnMessagesClearedResult, OnMessagesDeletedResult, OnMessagesInsertedResult, OnMessagesLoadedResult, OnMessagesSearchedByTimeRangeResult, OnMessagesSearchedByUserIdResult, OnMessagesSearchedResult, OnNotificationQuietHoursChangedResult, OnNotificationQuietHoursLoadedResult, OnNotificationQuietHoursRemovedResult, OnPrivateReadReceiptMessageSentResult, OnPrivateReadReceiptReceivedResult, OnPushContentShowStatusChangedResult, OnPushLanguageChangedResult, OnPushReceiveStatusChangedResult, OnRemoteMessageExpansionForKeyRemovedResult, OnRemoteMessageExpansionUpdatedResult, OnRemoteMessageRecalledResult, OnRemoteUltraGroupMessageExpansionUpdatedResult, OnRemoteUltraGroupMessageModifiedResult, OnRemoteUltraGroupMessageRecalledResult, OnSendingMediaMessageCanceledResult, OnTopConversationsLoadedResult, OnTotalUnreadCountLoadedResult, OnTypingStatusChangedResult, OnUltraGroupAllUnreadCountLoadedResult, OnUltraGroupAllUnreadMentionedCountLoadedResult, OnUltraGroupChannelDefaultNotificationLevelChangedResult, OnUltraGroupChannelDefaultNotificationLevelLoadedResult, OnUltraGroupConversationsSyncedResult, OnUltraGroupDefaultNotificationLevelChangedResult, OnUltraGroupDefaultNotificationLevelLoadedResult, OnUltraGroupMessageExpansionForKeysRemovedResult, OnUltraGroupMessageExpansionUpdatedResult, OnUltraGroupMessageModifiedResult, OnUltraGroupMessageRecalledResult, OnUltraGroupMessagesClearedForAllChannelResult, OnUltraGroupMessagesClearedResult, OnUltraGroupReadStatusSyncedResult, OnUltraGroupReadTimeReceivedResult, OnUltraGroupTypingStatusChangedResult, OnUltraGroupTypingStatusSentResult, OnUltraGroupUnreadCountLoadedResult, OnUltraGroupUnreadMentionedCountLoadedResult, OnUnreadCountByConversationTypesLoadedResult, OnUnreadCountClearedResult, OnUnreadCountLoadedResult, OnUnreadMentionedCountLoadedResult, OnUnreadMentionedMessagesLoadedResult, RCIMIWConnectCallback, RCIMIWConversationType, RCIMIWCustomMessage, RCIMIWCustomMessagePolicy, RCIMIWDownloadMediaMessageListener, RCIMIWFileMessage, RCIMIWGIFMessage, RCIMIWImageMessage, RCIMIWLocationMessage, RCIMIWLogLevel, RCIMIWMediaMessage, RCIMIWMessage, RCIMIWMessageOperationPolicy, RCIMIWMessageType, RCIMIWNativeCustomMediaMessage, RCIMIWNativeCustomMessage, RCIMIWNativeCustomMessagePersistentFlag, RCIMIWPushNotificationLevel, RCIMIWPushNotificationQuietHoursLevel, RCIMIWReceivedStatus, RCIMIWReferenceMessage, RCIMIWSendGroupMessageToDesignatedUsersCallback, RCIMIWSendMediaMessageListener, RCIMIWSendMessageCallback, RCIMIWSentStatus, RCIMIWSightMessage, RCIMIWTextMessage, RCIMIWTimeOrder, RCIMIWUltraGroupTypingStatus, RCIMIWVoiceMessage } from './RCIMDefines'; +export default class RCIMIWEngine { + static _invokeMethod(name: string, params?: object): any; + _invokeMethod(name: string, callback: any, params?: object): any; + private _setListener; + /** + * 初始化 IM 对象 + * @param appKey 融云后台申请的应用 appKey + * @param options 全局配置项 + * @returns 创建的 IM 对象 + */ + static create(appKey: string, options?: RCIMIWEngineOptions): Promise; + /** + * 销毁 IM 对象 + */ + destroy(): Promise; + /** + * 注册推送 token 给融云,用于不集成融云推送 SDK 但需使用融云消息推送能力。 + * 如果是 iOS 平台时,会忽略传入的 pushType 值,只使用 pushToken 参数。 + * 该方法需要在 IM 初始化后 3 秒再调用。 + * @param pushType 推送厂商类型 + * @param pushToken 推送 token (厂商接口 或 三方推送 SDK 提供的) + * @returns 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + registerPushToken(pushType: RCIMIWPushType, pushToken: string): Promise; + /** + * 注册原生自定义普通消息 + * @param messageIdentifier 消息的唯一标识 + * @param persistentFlag 消息的存储策略 + * @return 当次接口操作的状态码。0 代表调用成功,非 0 代表当前接口调用操作失败,详细错误参考错误码 + */ + registerNativeCustomMessage(messageIdentifier: string, persistentFlag: RCIMIWNativeCustomMessagePersistentFlag): Promise; + /** + * 注册原生自定义媒体消息 + * @param messageIdentifier 消息的唯一标识 + * @param persistentFlag 消息的存储策略 + * @return 当次接口操作的状态码。0 代表调用成功,非 0 代表当前接口调用操作失败,详细错误参考错误码 + */ + registerNativeCustomMediaMessage(messageIdentifier: string, persistentFlag: RCIMIWNativeCustomMessagePersistentFlag): Promise; + /** + * 连接融云服务器,在整个应用程序全局,只需要调用一次。调用此接口返回非业务错误码时,SDK 会启动重连机制进行重连;如果仍没有连接成功,会在设备网络状态变化时再次进行重连。 + * @param token 调用 server api 获取到的 token + * @param timeout 连接超时时间,单位:秒。 + * timeLimit <= 0,则 IM 将一直连接,直到连接成功或者无法连接(如 token 非法) + * timeLimit > 0,则 IM 将最多连接 timeLimit 秒 + * 如果在 timeLimit 秒内连接成功,后面再发生了网络变化或前后台切换,SDK 会自动重连; 如果在 timeLimit 秒无法连接成功则不再进行重连,通过 listener 告知连接超时,您需要再自行调用 connect 接口 + * @param callback 链接事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onConnected] + */ + connect(token: string, timeout: number, callback: RCIMIWConnectCallback): Promise; + /** + * 断开链接 + * 注:因为 SDK 在前后台切换或者网络出现异常都会自动重连,保证连接可靠性。 所以除非您的 App 逻辑需要登出,否则一般不需要调用此方法进行手动断开 + * @param receivePush 退出后是否接收 push,true:断开后接收远程推送,false:断开后不再接收远程推送 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + disconnect(receivePush: boolean): Promise; + /** + * 构建文本消息 + * @param type 会话类型, + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param text 文本内容 + * @return 文本消息实体 + */ + createTextMessage(type: RCIMIWConversationType, targetId: string, channelId: string, text: string): Promise; + /** + * 构建图片消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 图片消息的本地路径,必须为有效路径 + * @return 图片消息实体 + */ + createImageMessage(type: RCIMIWConversationType, targetId: string, channelId: string, path: string): Promise; + /** + * 构建文件消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 文件消息的本地路径,必须为有效路径 + * @return 文件消息实体 + */ + createFileMessage(type: RCIMIWConversationType, targetId: string, channelId: string, path: string): Promise; + /** + * 构建小视频消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 小视频消息的本地路径,必须为有效路径 + * @param duration 小视频消息的视频时长 + * @return 视频消息实体 + */ + createSightMessage(type: RCIMIWConversationType, targetId: string, channelId: string, path: string, duration: number): Promise; + /** + * 构建语音消息 (高清语音) + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 语音消息的本地路径,必须为有效路径 + * @param duration 语音消息的消息时长 + * @return 语音消息的实体 + */ + createVoiceMessage(type: RCIMIWConversationType, targetId: string, channelId: string, path: string, duration: number): Promise; + /** + * 构建引用消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param referenceMessage 引用的消息 + * @param text 引用的文本内容 + * @return 引用消息实体 + */ + createReferenceMessage(type: RCIMIWConversationType, targetId: string, channelId: string, referenceMessage: RCIMIWMessage, text: string): Promise; + /** + * 构建 GIF 消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path GIF 消息的本地路径 + * @return GIF 消息实体 + */ + createGIFMessage(type: RCIMIWConversationType, targetId: string, channelId: string, path: string): Promise; + /** + * 构建自定义消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param policy 消息的存储策略 + * @param messageIdentifier 消息的标识符,需唯一 + * @param fields 消息的内容键值对 + * @return 自定义消息实体 + */ + createCustomMessage(type: RCIMIWConversationType, targetId: string, channelId: string, policy: RCIMIWCustomMessagePolicy, messageIdentifier: string, fields: Record): Promise; + /** + * 构建位置消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param longitude 经度 + * @param latitude 纬度 + * @param poiName POI 信息 + * @param thumbnailPath 缩略图本地路径,必须为有效路径 + * @return 位置消息实体 + */ + createLocationMessage(type: RCIMIWConversationType, targetId: string, channelId: string, longitude: number, latitude: number, poiName: string, thumbnailPath: string): Promise; + /** + * 构建原生自定义普通消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageIdentifier 消息的标识符,需唯一 + * @param fields 消息的内容键值对 + * @return 原生自定义普通消息 + */ + createNativeCustomMessage(type: RCIMIWConversationType, targetId: string, channelId: string, messageIdentifier: string, fields: Record): Promise; + /** + * 构建原生自定义媒体消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageIdentifier 消息的标识符,需唯一 + * @param path 媒体文件的本地路径,必须为有效路径 + * @param fields 消息的内容键值对 + * @return 原生自定义媒体消息 + */ + createNativeCustomMediaMessage(type: RCIMIWConversationType, targetId: string, channelId: string, messageIdentifier: string, path: string, fields: Record): Promise; + /** + * 发送普通消息 + * @param message 发送的消息实体 + * @param callback 发送消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onMessageAttached],[onMessageSent] + */ + sendMessage(message: RCIMIWMessage, callback: RCIMIWSendMessageCallback): Promise; + /** + * 发送媒体消息 + * @param message 发送的媒体消息实体 + * @param listener 发送媒体消息的事件监听 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onMediaMessageSending],[onMediaMessageAttached],[onMediaMessageSent] + */ + sendMediaMessage(message: RCIMIWMediaMessage, listener: RCIMIWSendMediaMessageListener): Promise; + /** + * 取消发送媒体消息 + * @param message 需要取消发送的媒体消息实体 + * @param callback 取消发送媒体消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onSendingMediaMessageCanceled] + */ + cancelSendingMediaMessage(message: RCIMIWMediaMessage, callback: IRCIMIWCancelSendingMediaMessageCallback): Promise; + /** + * 下载媒体消息 + * @param message 需要下载的媒体消息实体 + * @param listener 下载媒体消息的事件监听 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMediaMessageDownloaded], [onMediaMessageDownloading] + */ + downloadMediaMessage(message: RCIMIWMediaMessage, listener: RCIMIWDownloadMediaMessageListener): Promise; + /** + * 取消下载媒体消息 + * @param message 需要取消下载的媒体消息实体 + * @param callback 取消下载媒体消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDownloadingMediaMessageCanceled] + */ + cancelDownloadingMediaMessage(message: RCIMIWMediaMessage, callback: IRCIMIWCancelDownloadingMediaMessageCallback): Promise; + /** + * 加载某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationLoaded] + * @deprecated 用 {@link #getConversation(RCIMIWConversationType, String, String, IRCIMIWGetConversationCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversation(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param callback 获取会话事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationLoaded] + */ + getConversation(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetConversationCallback): Promise; + /** + * 加载某些会话 + * @param conversationTypes 会话类型 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param startTime 时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据 + * @param count 查询的数量, 0 < count <= 50 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoaded] + * @deprecated 用 {@link #getConversations(List, String, long, int, IRCIMIWGetConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversations(conversationTypes: RCIMIWConversationType[], channelId: string, startTime: number, count: number): Promise; + /** + * 获取某些会话 + * @param conversationTypes 会话类型 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param startTime 时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据 + * @param count 查询的数量, 0 < count <= 50 + * @param callback 获取会话列表事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoaded] + */ + getConversations(conversationTypes: RCIMIWConversationType[], channelId: string, startTime: number, count: number, callback: IRCIMIWGetConversationsCallback): Promise; + /** + * 获取指定类型的含有未读消息的会话列表 + * @param conversationTypes 支持单聊、群聊、系统会话 + * @param callback 获取会话列表事件回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getUnreadConversations(conversationTypes: RCIMIWConversationType[], callback: IRCIMIWGetUnreadConversationsCallback): Promise; + /** + * 移除某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param callback 移除会话事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationRemoved] + */ + removeConversation(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWRemoveConversationCallback): Promise; + /** + * 根据会话类型移除会话 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 移除会话列表事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsRemoved] + */ + removeConversations(conversationTypes: RCIMIWConversationType[], channelId: string, callback: IRCIMIWRemoveConversationsCallback): Promise; + /** + * 加载某个会话的未读数 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountLoaded] + * @deprecated 用 {@link #getUnreadCount(RCIMIWConversationType, String, String, IRCIMIWGetUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadCount(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取某个会话的未读数 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取会话未读数事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountLoaded] + */ + getUnreadCount(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetUnreadCountCallback): Promise; + /** + * 加载所有未读数 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTotalUnreadCountLoaded] + * @deprecated 用 {@link #getTotalUnreadCount(String, IRCIMIWGetTotalUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadTotalUnreadCount(channelId: string): Promise; + /** + * 获取所有未读数 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取所有未读数事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTotalUnreadCountLoaded] + */ + getTotalUnreadCount(channelId: string, callback: IRCIMIWGetTotalUnreadCountCallback): Promise; + /** + * 加载会话中未读的 @ 消息数量。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUnreadMentionedCount(RCIMIWConversationType, String, String, IRCIMIWGetUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadMentionedCount(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取会话中未读的 @ 消息数量。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取会话中未读的 @ 消息数量事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedCountLoaded] + */ + getUnreadMentionedCount(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetUnreadMentionedCountCallback): Promise; + /** + * 加载当前用户加入的所有超级群会话的未读消息数的总和。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadCountLoaded] + * @deprecated 用 {@link #getUltraGroupAllUnreadCount(IRCIMIWGetUltraGroupAllUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupAllUnreadCount(): Promise; + /** + * 获取当前用户加入的所有超级群会话的未读消息数的总和。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadCountLoaded] + */ + getUltraGroupAllUnreadCount(callback: IRCIMIWGetUltraGroupAllUnreadCountCallback): Promise; + /** + * 加载当前用户加入的所有超级群会话中的未读 @ 消息数的总和。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUltraGroupAllUnreadMentionedCount(IRCIMIWGetUltraGroupAllUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupAllUnreadMentionedCount(): Promise; + /** + * 获取当前用户加入的所有超级群会话中的未读 @ 消息数的总和。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadMentionedCountLoaded] + */ + getUltraGroupAllUnreadMentionedCount(callback: IRCIMIWGetUltraGroupAllUnreadMentionedCountCallback): Promise; + /** + * 获取指定会话的未读消息数 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadCountLoaded] + * @deprecated 用 {@link #getUltraGroupUnreadCount(String, IRCIMIWGetUltraGroupUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupUnreadCount(targetId: string): Promise; + /** + * 获取指定会话的未读消息数 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadCountLoaded] + */ + getUltraGroupUnreadCount(targetId: string, callback: IRCIMIWGetUltraGroupUnreadCountCallback): Promise; + /** + * 获取超级群会话中被 @ 的消息数 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUltraGroupUnreadMentionedCount(String, IRCIMIWGetUltraGroupUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupUnreadMentionedCount(targetId: string): Promise; + /** + * 获取超级群会话中被 @ 的消息数 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadMentionedCountLoaded] + */ + getUltraGroupUnreadMentionedCount(targetId: string, callback: IRCIMIWGetUltraGroupUnreadMentionedCountCallback): Promise; + /** + * 根据会话类型加载未读数 + * 注:不支持聊天室! + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param contain 是否包含免打扰消息的未读消息数。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountByConversationTypesLoaded] + * @deprecated 用 {@link #getUnreadCountByConversationTypes(List, String, boolean, IRCIMIWGetUnreadCountByConversationTypesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadCountByConversationTypes(conversationTypes: RCIMIWConversationType[], channelId: string, contain: boolean): Promise; + /** + * 根据会话类型加载未读数 + * 注:不支持聊天室! + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param contain 是否包含免打扰消息的未读消息数。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountByConversationTypesLoaded] + */ + getUnreadCountByConversationTypes(conversationTypes: RCIMIWConversationType[], channelId: string, contain: boolean, callback: IRCIMIWGetUnreadCountByConversationTypesCallback): Promise; + /** + * 清除某个会话中的未读消息数。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 该会话已阅读的最后一条消息的发送时间戳,清除所有传入当前最新时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountCleared] + */ + clearUnreadCount(type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number, callback: IRCIMIWClearUnreadCountCallback): Promise; + /** + * 保存会话草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param draft 草稿的文字内容。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageSaved] + */ + saveDraftMessage(type: RCIMIWConversationType, targetId: string, channelId: string, draft: string, callback: IRCIMIWSaveDraftMessageCallback): Promise; + /** + * 加载会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageLoaded] + * @deprecated 用 {@link #getDraftMessage(RCIMIWConversationType, String, String, IRCIMIWGetDraftMessageCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadDraftMessage(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageLoaded] + */ + getDraftMessage(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetDraftMessageCallback): Promise; + /** + * 删除指定会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageCleared] + */ + clearDraftMessage(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWClearDraftMessageCallback): Promise; + /** + * 加载免打扰的会话列表。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlockedConversationsLoaded] + * @deprecated 用 {@link #getBlockedConversations(List, String, IRCIMIWGetBlockedConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlockedConversations(conversationTypes: RCIMIWConversationType[], channelId: string): Promise; + /** + * 获取免打扰的会话列表。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlockedConversationsLoaded] + */ + getBlockedConversations(conversationTypes: RCIMIWConversationType[], channelId: string, callback: IRCIMIWGetBlockedConversationsCallback): Promise; + /** + * 设置会话的置顶状态。若会话不存在,调用此方法 SDK 自动创建会话并置顶。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param top 是否置顶 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusChanged] + */ + changeConversationTopStatus(type: RCIMIWConversationType, targetId: string, channelId: string, top: boolean, callback: IRCIMIWChangeConversationTopStatusCallback): Promise; + /** + * 加载会话的置顶状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusLoaded] + * @deprecated 用 {@link #getConversationTopStatus(RCIMIWConversationType, String, String, IRCIMIWGetConversationTopStatusCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationTopStatus(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取会话的置顶状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusLoaded] + */ + getConversationTopStatus(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetConversationTopStatusCallback): Promise; + /** + * 同步会话阅读状态。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 会话中已读的最后一条消息的发送时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationReadStatusSynced] + */ + syncConversationReadStatus(type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number, callback: IRCIMIWSyncConversationReadStatusCallback): Promise; + /** + * 向会话中发送正在输入的状态,目前只支持单聊。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param currentType 当前的状态 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + sendTypingStatus(type: RCIMIWConversationType, targetId: string, channelId: string, currentType: string): Promise; + /** + * 加载历史消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param sentTime 当前消息时间戳 + * @param order 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增) + * @param policy 消息的加载策略。LOCAL:只加载本地,REMOTE:只加载远端,LOCAL_REMOTE:本地远端都加载 + * @param count 获取的消息数量,0 < count <= 20 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesLoaded] + * @deprecated 用 {@link #getMessages(RCIMIWConversationType, String, String, long, RCIMIWTimeOrder, RCIMIWMessageOperationPolicy, int, IRCIMIWGetMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadMessages(type: RCIMIWConversationType, targetId: string, channelId: string, sentTime: number, order: RCIMIWTimeOrder, policy: RCIMIWMessageOperationPolicy, count: number): Promise; + /** + * 加载历史消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param sentTime 当前消息时间戳 + * @param order 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增) + * @param policy 消息的加载策略。LOCAL:只加载本地,REMOTE:只加载远端,LOCAL_REMOTE:本地远端都加载 + * @param count 获取的消息数量,0 < count <= 20 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesLoaded] + */ + getMessages(type: RCIMIWConversationType, targetId: string, channelId: string, sentTime: number, order: RCIMIWTimeOrder, policy: RCIMIWMessageOperationPolicy, count: number, callback: IRCIMIWGetMessagesCallback): Promise; + /** + * 根据消息 id 获取消息体(本地数据库索引唯一值)。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getMessageById(messageId: number, callback: IRCIMIWGetMessageCallback): Promise; + /** + * 通过全局唯一 id 获取消息实体。 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getMessageByUId(messageUId: string, callback: IRCIMIWGetMessageCallback): Promise; + /** + * 加载第一条未读消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onFirstUnreadMessageLoaded] + * @deprecated 用 {@link #getFirstUnreadMessage(RCIMIWConversationType, String, String, IRCIMIWGetFirstUnreadMessageCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadFirstUnreadMessage(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取第一条未读消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onFirstUnreadMessageLoaded] + */ + getFirstUnreadMessage(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetFirstUnreadMessageCallback): Promise; + /** + * 加载会话中未读的 @ 消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedMessagesLoaded] + * @deprecated 用 {@link #getUnreadMentionedMessages(RCIMIWConversationType, String, String, IRCIMIWGetUnreadMentionedMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadMentionedMessages(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取会话中未读的 @ 消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedMessagesLoaded] + */ + getUnreadMentionedMessages(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetUnreadMentionedMessagesCallback): Promise; + /** + * 插入一条消息 + * @param message 插入的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageInserted] + */ + insertMessage(message: RCIMIWMessage, callback: IRCIMIWInsertMessageCallback): Promise; + /** + * 插入多条消息,不支持超级群 + * @param messages 插入的消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesInserted] + */ + insertMessages(messages: RCIMIWMessage[], callback: IRCIMIWInsertMessagesCallback): Promise; + /** + * 清除消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 清除消息截止时间戳,0 <= recordTime <= 当前会话最后一条消息的 sentTime, 0 清除所有消息,其他值清除小于等于 recordTime 的消息 + * @param policy 清除的策略 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesCleared] + */ + clearMessages(type: RCIMIWConversationType, targetId: string, channelId: string, timestamp: number, policy: RCIMIWMessageOperationPolicy, callback: IRCIMIWClearMessagesCallback): Promise; + /** + * 删除本地消息 + * @param messages 消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onLocalMessagesDeleted] + */ + deleteLocalMessages(messages: RCIMIWMessage[], callback: IRCIMIWDeleteLocalMessagesCallback): Promise; + /** + * 删除消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesDeleted] + */ + deleteMessages(type: RCIMIWConversationType, targetId: string, channelId: string, messages: RCIMIWMessage[], callback: IRCIMIWDeleteMessagesCallback): Promise; + /** + * 撤回消息 + * @param message 需要被撤回的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageRecalled] + */ + recallMessage(message: RCIMIWMessage, callback: IRCIMIWRecallMessageCallback): Promise; + /** + * 发送某个会话中的消息阅读回执 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 该会话中已读的最后一条消息的发送时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPrivateReadReceiptMessageSent] + */ + sendPrivateReadReceiptMessage(targetId: string, channelId: string, timestamp: number, callback: IRCIMIWSendPrivateReadReceiptMessageCallback): Promise; + /** + * 发起群聊消息已读回执请求 + * @param message 需要请求已读回执的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupReadReceiptRequestSent] + */ + sendGroupReadReceiptRequest(message: RCIMIWMessage, callback: IRCIMIWSendGroupReadReceiptRequestCallback): Promise; + /** + * 发送群聊已读回执 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 会话中需要发送已读回执的消息列表 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupReadReceiptResponseSent] + */ + sendGroupReadReceiptResponse(targetId: string, channelId: string, messages: RCIMIWMessage[], callback: IRCIMIWSendGroupReadReceiptResponseCallback): Promise; + /** + * 更新消息扩展信息 + * 每条消息携带扩展信息键值对最大值 300个,单次设置扩展信息键值对最大值 20个 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param expansion 要更新的消息扩展信息键值对,类型是 HashMap;Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,不支持汉字。Value 可以输入空格 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageExpansionUpdated] + */ + updateMessageExpansion(messageUId: string, expansion: Record, callback: IRCIMIWUpdateMessageExpansionCallback): Promise; + /** + * 删除消息扩展信息中特定的键值对 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param keys 消息扩展信息中待删除的 key 的列表,类型是 ArrayList + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageExpansionForKeysRemoved] + */ + removeMessageExpansionForKeys(messageUId: string, keys: string[], callback: IRCIMIWRemoveMessageExpansionForKeysCallback): Promise; + /** + * 设置消息发送状态。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param sentStatus 要修改的状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageSentStatusChanged] + */ + changeMessageSentStatus(messageId: number, sentStatus: RCIMIWSentStatus, callback: IRCIMIWChangeMessageSentStatusCallback): Promise; + /** + * 设置消息接收状态。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param receivedStatus 要修改的状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageReceiveStatusChanged] + */ + changeMessageReceiveStatus(messageId: number, receivedStatus: RCIMIWReceivedStatus, callback: IRCIMIWChangeMessageReceivedStatusCallback): Promise; + /** + * 加入聊天室。 + * @param targetId 聊天室会话 ID + * @param messageCount 进入聊天室拉取消息数目,-1 时不拉取任何消息,0 时拉取 10 条消息,最多只能拉取 50 + * @param autoCreate 是否创建聊天室,TRUE 如果聊天室不存在,sdk 会创建聊天室并加入,如果已存在,则直接加入 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomJoined] + */ + joinChatRoom(targetId: string, messageCount: number, autoCreate: boolean, callback: IRCIMIWJoinChatRoomCallback): Promise; + /** + * 退出聊天室。 + * @param targetId 聊天室会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomLeft] + */ + leaveChatRoom(targetId: string, callback: IRCIMIWLeaveChatRoomCallback): Promise; + /** + * 加载聊天室历史消息记录。 + * 注:必须先开通聊天室消息云存储功能。 + * @param targetId 聊天室会话 ID + * @param timestamp 起始的消息发送时间戳 + * @param order 拉取顺序 0:倒序,1:正序 + * @param count 要获取的消息数量,0 < count <= 50。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomMessagesLoaded] + * @deprecated 用 {@link #getChatRoomMessages(String, long, RCIMIWTimeOrder, int, IRCIMIWGetChatRoomMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomMessages(targetId: string, timestamp: number, order: RCIMIWTimeOrder, count: number): Promise; + /** + * 获取聊天室历史消息记录。 + * 注:必须先开通聊天室消息云存储功能。 + * @param targetId 聊天室会话 ID + * @param timestamp 起始的消息发送时间戳 + * @param order 拉取顺序 0:倒序,1:正序 + * @param count 要获取的消息数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomMessagesLoaded] + */ + getChatRoomMessages(targetId: string, timestamp: number, order: RCIMIWTimeOrder, count: number, callback: IRCIMIWGetChatRoomMessagesCallback): Promise; + /** + * 设置聊天室自定义属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 + * @param value 聊天室属性对应的值,最大长度 4096 个字符 + * @param deleteWhenLeft 用户掉线或退出时,是否自动删除该 Key、Value 值 + * @param overwrite 如果当前 key 存在,是否进行覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryAdded] + */ + addChatRoomEntry(targetId: string, key: string, value: string, deleteWhenLeft: boolean, overwrite: boolean, callback: IRCIMIWAddChatRoomEntryCallback): Promise; + /** + * 批量设置聊天室自定义属性 + * @param targetId 聊天室会话 ID + * @param entries 聊天室属性 + * @param deleteWhenLeft 用户掉线或退出时,是否自动删除该 Key、Value 值 + * @param overwrite 是否强制覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntriesAdded] + */ + addChatRoomEntries(targetId: string, entries: Record, deleteWhenLeft: boolean, overwrite: boolean, callback: IRCIMIWAddChatRoomEntriesCallback): Promise; + /** + * 加载聊天室单个属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryLoaded] + * @deprecated 用 {@link #getChatRoomEntry(String, String, IRCIMIWGetChatRoomEntryCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomEntry(targetId: string, key: string): Promise; + /** + * 获取聊天室单个属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryLoaded] + */ + getChatRoomEntry(targetId: string, key: string, callback: IRCIMIWGetChatRoomEntryCallback): Promise; + /** + * 加载聊天室所有属性。 + * @param targetId 聊天室会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomAllEntriesLoaded] + * @deprecated 用 {@link #getChatRoomAllEntries(String, IRCIMIWGetChatRoomAllEntriesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomAllEntries(targetId: string): Promise; + /** + * 获取聊天室所有属性。 + * @param targetId 聊天室会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomAllEntriesLoaded] + */ + getChatRoomAllEntries(targetId: string, callback: IRCIMIWGetChatRoomAllEntriesCallback): Promise; + /** + * 删除聊天室自定义属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @param force 是否强制删除 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryRemoved] + */ + removeChatRoomEntry(targetId: string, key: string, force: boolean, callback: IRCIMIWRemoveChatRoomEntryCallback): Promise; + /** + * 批量删除聊天室自定义属性 + * @param targetId 聊天室会话 ID + * @param keys 聊天室属性 + * @param force 是否强制覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntriesRemoved] + */ + removeChatRoomEntries(targetId: string, keys: string[], force: boolean, callback: IRCIMIWRemoveChatRoomEntriesCallback): Promise; + /** + * 将某个用户加入黑名单。 + * 当你把对方加入黑名单后,对方再发消息时,就会提示“已被加入黑名单,消息发送失败”。 但你依然可以发消息个对方。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistAdded] + */ + addToBlacklist(userId: string, callback: IRCIMIWAddToBlacklistCallback): Promise; + /** + * 将某个用户从黑名单中移出。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistRemoved] + */ + removeFromBlacklist(userId: string, callback: IRCIMIWRemoveFromBlacklistCallback): Promise; + /** + * 获取某用户是否在黑名单中。 + * @param userId 用户 Id + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistStatusLoaded] + * @deprecated 用 {@link #getBlacklistStatus(String, IRCIMIWGetBlacklistStatusCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlacklistStatus(userId: string): Promise; + /** + * 获取某用户是否在黑名单中。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistStatusLoaded] + */ + getBlacklistStatus(userId: string, callback: IRCIMIWGetBlacklistStatusCallback): Promise; + /** + * 加载当前用户设置的黑名单列表。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistLoaded] + * @deprecated 用 {@link #getBlacklist(IRCIMIWGetBlacklistCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlacklist(): Promise; + /** + * 获取当前用户设置的黑名单列表。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistLoaded] + */ + getBlacklist(callback: IRCIMIWGetBlacklistCallback): Promise; + /** + * 根据关键字搜索指定会话中的消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 查询 beginTime 之前的消息, 传 0 时从最新消息开始搜索,从该时间往前搜索。 + * @param count 查询的数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearched] + */ + searchMessages(type: RCIMIWConversationType, targetId: string, channelId: string, keyword: string, startTime: number, count: number, callback: IRCIMIWSearchMessagesCallback): Promise; + /** + * 根据关键字搜索指定会话中某个时间段的消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param offset 偏移量 + * @param count 返回的搜索结果数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearchedByTimeRange] + */ + searchMessagesByTimeRange(type: RCIMIWConversationType, targetId: string, channelId: string, keyword: string, startTime: number, endTime: number, offset: number, count: number, callback: IRCIMIWSearchMessagesByTimeRangeCallback): Promise; + /** + * 根据用户 id 搜索指定会话中的消息。 + * @param userId 用户 id + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param startTime 查询记录的起始时间, 传 0 时从最新消息开始搜索,从该时间往前搜索。 + * @param count 返回的搜索结果数量 0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearchedByUserId] + */ + searchMessagesByUserId(userId: string, type: RCIMIWConversationType, targetId: string, channelId: string, startTime: number, count: number, callback: IRCIMIWSearchMessagesByUserIdCallback): Promise; + /** + * 根据关键字搜索会话。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageTypes 搜索的消息类型 + * @param keyword 搜索的关键字。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsSearched] + */ + searchConversations(conversationTypes: RCIMIWConversationType[], channelId: string, messageTypes: RCIMIWMessageType[], keyword: string, callback: IRCIMIWSearchConversationsCallback): Promise; + /** + * 屏蔽某个时间段的消息提醒 + * @param startTime 开始消息免打扰时间,格式为 HH:MM:SS + * @param spanMinutes 需要消息免打扰分钟数,0 < spanMinutes < 1440( 比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 spanMinutes 为 60 分钟。设置为 1439 代表全天免打扰 (23 60 + 59 = 1439 )) + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursChanged] + */ + changeNotificationQuietHours(startTime: string, spanMinutes: number, level: RCIMIWPushNotificationQuietHoursLevel, callback: IRCIMIWChangeNotificationQuietHoursCallback): Promise; + /** + * 删除已设置的全局时间段消息提醒屏蔽 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursRemoved] + */ + removeNotificationQuietHours(callback: IRCIMIWRemoveNotificationQuietHoursCallback): Promise; + /** + * 加载已设置的时间段消息提醒屏蔽 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursLoaded] + * @deprecated 用 {@link #getNotificationQuietHours(IRCIMIWGetNotificationQuietHoursCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadNotificationQuietHours(): Promise; + /** + * 获取已设置的时间段消息提醒屏蔽 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursLoaded] + */ + getNotificationQuietHours(callback: IRCIMIWGetNotificationQuietHoursCallback): Promise; + /** + * 设置会话的消息提醒状态 + * 注:超级群调用该接口,channelId 为空时,相当于设置了 channelId 为空的频道的免打扰,不会屏蔽整个超级群会话下所有频道的免打扰 + * @param type 会话类型。请注意以下限制:
  • *超级群会话类型*:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话*所有消息*设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(`targetId`)中*不属于任何频道的消息*的免打扰状态级别。如需修改请提交工单。
  • *聊天室会话类型*:不支持,因为聊天室消息默认不支持消息推送提醒。
+ * @param targetId 会话 ID + * @param channelId 超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • *注意*:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(`targetId`)中*不属于任何频道的消息*设置免打扰状态级别。如需修改请提交工单。

+ * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelChanged] + */ + changeConversationNotificationLevel(type: RCIMIWConversationType, targetId: string, channelId: string, level: RCIMIWPushNotificationLevel, callback: IRCIMIWChangeConversationNotificationLevelCallback): Promise; + /** + * 加载会话的消息提醒状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelLoaded] + * @deprecated 用 {@link #getConversationNotificationLevel(RCIMIWConversationType, String, String, IRCIMIWGetConversationNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationNotificationLevel(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取会话的消息提醒状态 + * @param type 会话类型。请注意以下限制:
  • *超级群会话类型*:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话*所有消息*设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(`targetId`)中*不属于任何频道的消息*的免打扰状态级别。如需修改请提交工单。
  • *聊天室会话类型*:不支持,因为聊天室消息默认不支持消息推送提醒。
+ * @param targetId 会话 ID + * @param channelId 超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • *注意*:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(`targetId`)中*不属于任何频道的消息*设置免打扰状态级别。如需修改请提交工单。

+ * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelLoaded] + */ + getConversationNotificationLevel(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetConversationNotificationLevelCallback): Promise; + /** + * 设置会话类型的消息提醒状态 + * 注:如要移除消息提醒状态,设置level为RCIMIWPushNotificationLevelDefault + * @param type 会话类型 + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTypeNotificationLevelChanged] + */ + changeConversationTypeNotificationLevel(type: RCIMIWConversationType, level: RCIMIWPushNotificationLevel, callback: IRCIMIWChangeConversationTypeNotificationLevelCallback): Promise; + /** + * 获取会话类型的消息提醒状态 + * @param type 会话类型 + * @return [onConversationTypeNotificationLevelLoaded] + * @deprecated 用 {@link #getConversationTypeNotificationLevel(RCIMIWConversationType, IRCIMIWGetConversationTypeNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationTypeNotificationLevel(type: RCIMIWConversationType): Promise; + /** + * 获取会话类型的消息提醒状态 + * @param type 会话类型 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return [onConversationTypeNotificationLevelLoaded] + */ + getConversationTypeNotificationLevel(type: RCIMIWConversationType, callback: IRCIMIWGetConversationTypeNotificationLevelCallback): Promise; + /** + * 设置超级群的默认消息状态 + * 一般由管理员设置的接口,针对超级群的所有群成员生效,针对超级群下所有频道生效,优先级较低。如果群成员自己超级群的免打扰级别,那么以群成员自己设置的为准。 + * @param targetId 会话 ID + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelChanged] + */ + changeUltraGroupDefaultNotificationLevel(targetId: string, level: RCIMIWPushNotificationLevel, callback: IRCIMIWChangeUltraGroupDefaultNotificationLevelCallback): Promise; + /** + * 获取超级群的默认消息状态 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelLoaded] + * @deprecated 用 {@link #getUltraGroupDefaultNotificationLevel(String, IRCIMIWGetUltraGroupDefaultNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupDefaultNotificationLevel(targetId: string): Promise; + /** + * 获取超级群的默认消息状态 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelLoaded] + */ + getUltraGroupDefaultNotificationLevel(targetId: string, callback: IRCIMIWGetUltraGroupDefaultNotificationLevelCallback): Promise; + /** + * 设置超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelChanged] + */ + changeUltraGroupChannelDefaultNotificationLevel(targetId: string, channelId: string, level: RCIMIWPushNotificationLevel, callback: IRCIMIWChangeUltraGroupChannelDefaultNotificationLevelCallback): Promise; + /** + * 获取超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelLoaded] + * @deprecated 用 {@link #getUltraGroupChannelDefaultNotificationLevel(String, String, IRCIMIWGetUltraGroupChannelDefaultNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupChannelDefaultNotificationLevel(targetId: string, channelId: string): Promise; + /** + * 获取超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelLoaded] + */ + getUltraGroupChannelDefaultNotificationLevel(targetId: string, channelId: string, callback: IRCIMIWGetUltraGroupChannelDefaultNotificationLevelCallback): Promise; + /** + * 设置是否显示远程推送内容详情,此功能需要从服务端开启用户设置功能。 + * @param showContent 是否显示远程推送内容 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushContentShowStatusChanged] + */ + changePushContentShowStatus(showContent: boolean, callback: IRCIMIWChangePushContentShowStatusCallback): Promise; + /** + * 设置推送语言 + * @param language 推送语言, 目前仅支持 en_us、zh_cn、ar_sa + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushLanguageChanged] + */ + changePushLanguage(language: string, callback: IRCIMIWChangePushLanguageCallback): Promise; + /** + * 设置是否接收远程推送。 + * 前提:移动端未在线,Web 、MAC/PC 终端在线,移动端是否接收远程推送。 + * 此功能需要从服务端开启用户设置功能。 + * @param receive 是否接收 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushReceiveStatusChanged] + */ + changePushReceiveStatus(receive: boolean, callback: IRCIMIWChangePushReceiveStatusCallback): Promise; + /** + * 给指定的群成员发送消息 + * @param message 要发送的消息 + * @param userIds 群成员集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupMessageToDesignatedUsersAttached], [onGroupMessageToDesignatedUsersSent] + */ + sendGroupMessageToDesignatedUsers(message: RCIMIWMessage, userIds: string[], callback: RCIMIWSendGroupMessageToDesignatedUsersCallback): Promise; + /** + * 加载指定会话的消息总数。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageCountLoaded] + * @deprecated 用 {@link #getMessageCount(RCIMIWConversationType, String, String, IRCIMIWGetMessageCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadMessageCount(type: RCIMIWConversationType, targetId: string, channelId: string): Promise; + /** + * 获取指定会话的消息总数。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageCountLoaded] + */ + getMessageCount(type: RCIMIWConversationType, targetId: string, channelId: string, callback: IRCIMIWGetMessageCountCallback): Promise; + /** + * 根据会话类型,加载置顶会话列表 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTopConversationsLoaded] + * @deprecated 用 {@link #getTopConversations(List, String, IRCIMIWGetTopConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadTopConversations(conversationTypes: RCIMIWConversationType[], channelId: string): Promise; + /** + * 根据会话类型,获取置顶会话列表 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTopConversationsLoaded] + */ + getTopConversations(conversationTypes: RCIMIWConversationType[], channelId: string, callback: IRCIMIWGetTopConversationsCallback): Promise; + /** + * 上报超级群的已读时间 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param timestamp 已读时间 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupReadStatusSynced] + */ + syncUltraGroupReadStatus(targetId: string, channelId: string, timestamp: number, callback: IRCIMIWSyncUltraGroupReadStatusCallback): Promise; + /** + * 获取特定会话下所有频道的会话列表,只支持超级群 + * @param type 会话类型 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoadedForAllChannel] + * @deprecated 用 {@link #getConversationsForAllChannel(RCIMIWConversationType, String, IRCIMIWGetConversationsForAllChannelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationsForAllChannel(type: RCIMIWConversationType, targetId: string): Promise; + /** + * 获取特定会话下所有频道的会话列表,只支持超级群 + * @param type 会话类型 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoadedForAllChannel] + */ + getConversationsForAllChannel(type: RCIMIWConversationType, targetId: string, callback: IRCIMIWGetConversationsForAllChannelCallback): Promise; + /** + * 修改超级群消息 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param message 要修改的 message + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageModified] + */ + modifyUltraGroupMessage(messageUId: string, message: RCIMIWMessage, callback: IRCIMIWModifyUltraGroupMessageCallback): Promise; + /** + * 撤回超级群消息 + * @param message 需要撤回的消息 + * @param deleteRemote 是否删除远端消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageRecalled] + */ + recallUltraGroupMessage(message: RCIMIWMessage, deleteRemote: boolean, callback: IRCIMIWRecallUltraGroupMessageCallback): Promise; + /** + * 删除超级群指定时间之前的消息 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param timestamp 时间戳 + * @param policy 清除策略 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessagesCleared] + */ + clearUltraGroupMessages(targetId: string, channelId: string, timestamp: number, policy: RCIMIWMessageOperationPolicy, callback: IRCIMIWClearUltraGroupMessagesCallback): Promise; + /** + * 发送超级群输入状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param typingStatus 输入状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupTypingStatusSent] + */ + sendUltraGroupTypingStatus(targetId: string, channelId: string, typingStatus: RCIMIWUltraGroupTypingStatus, callback: IRCIMIWSendUltraGroupTypingStatusCallback): Promise; + /** + * 删除超级群所有频道指定时间之前的消息 + * @param targetId 会话 ID + * @param timestamp 时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessagesClearedForAllChannel] + */ + clearUltraGroupMessagesForAllChannel(targetId: string, timestamp: number, callback: IRCIMIWClearUltraGroupMessagesForAllChannelCallback): Promise; + /** + * 从服务获取批量消息 + * @param messages 获取的消息集合 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBatchRemoteUltraGroupMessagesLoaded] + * @deprecated 用 {@link #getBatchRemoteUltraGroupMessages(List, IRCIMIWGetBatchRemoteUltraGroupMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBatchRemoteUltraGroupMessages(messages: RCIMIWMessage[]): Promise; + /** + * 从服务获取批量消息 + * @param messages 获取的消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBatchRemoteUltraGroupMessagesLoaded] + */ + getBatchRemoteUltraGroupMessages(messages: RCIMIWMessage[], callback: IRCIMIWGetBatchRemoteUltraGroupMessagesCallback): Promise; + /** + * 更新超级群消息扩展信息 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param expansion 更新的消息扩展信息键值对,类型是 HashMap;Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,不支持汉字。Value 可以输入空格。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageExpansionUpdated] + */ + updateUltraGroupMessageExpansion(messageUId: string, expansion: Record, callback: IRCIMIWUpdateUltraGroupMessageExpansionCallback): Promise; + /** + * 删除超级群消息扩展信息中特定的键值对 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param keys 消息扩展信息中待删除的 key 的列表,类型是 ArrayList + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageExpansionForKeysRemoved] + */ + removeUltraGroupMessageExpansionForKeys(messageUId: string, keys: string[], callback: IRCIMIWRemoveUltraGroupMessageExpansionForKeysCallback): Promise; + /** + * 修改日志等级 + * @param level 日志级别 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + changeLogLevel(level: RCIMIWLogLevel): Promise; + /** + * 获取本地时间与服务器时间的时间差。消息发送成功后,SDK 与服务器同步时间,消息所在数据库中存储的时间就是服务器时间。 System.currentTimeMillis() - getDeltaTime() 可以获取服务器当前时间。 + * @return 本地时间与服务器时间的差值 + */ + getDeltaTime(): Promise; + /** + * 收到消息的监听 + */ + setOnMessageReceivedListener(callback?: (res: OnMessageReceivedResult) => void): void; + /** + * 网络状态变化 + */ + setOnConnectionStatusChangedListener(callback?: (res: OnConnectionStatusChangedResult) => void): void; + /** + * 会话状态置顶多端同步监听 + */ + setOnConversationTopStatusSyncedListener(callback?: (res: OnConversationTopStatusSyncedResult) => void): void; + /** + * 会话状态免打扰多端同步监听 + */ + setOnConversationNotificationLevelSyncedListener(callback?: (res: OnConversationNotificationLevelSyncedResult) => void): void; + /** + * 撤回消息监听器 + */ + setOnRemoteMessageRecalledListener(callback?: (res: OnRemoteMessageRecalledResult) => void): void; + /** + * 单聊中收到消息回执的回调。 + */ + setOnPrivateReadReceiptReceivedListener(callback?: (res: OnPrivateReadReceiptReceivedResult) => void): void; + /** + * 消息扩展信息更改的回调 + */ + setOnRemoteMessageExpansionUpdatedListener(callback?: (res: OnRemoteMessageExpansionUpdatedResult) => void): void; + /** + * 消息扩展信息删除的回调 + */ + setOnRemoteMessageExpansionForKeyRemovedListener(callback?: (res: OnRemoteMessageExpansionForKeyRemovedResult) => void): void; + /** + * 聊天室用户进入、退出聊天室监听 + */ + setOnChatRoomMemberChangedListener(callback?: (res: OnChatRoomMemberChangedResult) => void): void; + /** + * 会话输入状态发生变化。对于单聊而言,当对方正在输入时,监听会触发一次;当对方不处于输入状态时,该监听还会触发一次,但回调里输入用户列表为空。 + */ + setOnTypingStatusChangedListener(callback?: (res: OnTypingStatusChangedResult) => void): void; + /** + * 同步消息未读状态监听接口。多端登录,收到其它端清除某一会话未读数通知的时候 + */ + setOnConversationReadStatusSyncMessageReceivedListener(callback?: (res: OnConversationReadStatusSyncMessageReceivedResult) => void): void; + /** + * 聊天室 KV 同步完成的回调 + */ + setOnChatRoomEntriesSyncedListener(callback?: (res: OnChatRoomEntriesSyncedResult) => void): void; + /** + * 聊天室 KV 发生变化的回调 + */ + setOnChatRoomEntriesChangedListener(callback?: (res: OnChatRoomEntriesChangedResult) => void): void; + /** + * 超级群消息 kv 被更新 + */ + setOnRemoteUltraGroupMessageExpansionUpdatedListener(callback?: (res: OnRemoteUltraGroupMessageExpansionUpdatedResult) => void): void; + /** + * 超级群消息被更改 + */ + setOnRemoteUltraGroupMessageModifiedListener(callback?: (res: OnRemoteUltraGroupMessageModifiedResult) => void): void; + /** + * 超级群消息被撤回 + */ + setOnRemoteUltraGroupMessageRecalledListener(callback?: (res: OnRemoteUltraGroupMessageRecalledResult) => void): void; + /** + * 超级群已读的监听 + */ + setOnUltraGroupReadTimeReceivedListener(callback?: (res: OnUltraGroupReadTimeReceivedResult) => void): void; + /** + * 用户输入状态变化的回调 + * 当客户端收到用户输入状态的变化时,会回调此接口,通知发生变化的会话以及当前正在输入的RCUltraGroupTypingStatusInfo列表 + */ + setOnUltraGroupTypingStatusChangedListener(callback?: (res: OnUltraGroupTypingStatusChangedResult) => void): void; + /** + * 发送含有敏感词消息被拦截的回调 + */ + setOnMessageBlockedListener(callback?: (res: OnMessageBlockedResult) => void): void; + /** + * 聊天室状态发生变化的监听 + */ + setOnChatRoomStatusChangedListener(callback?: (res: OnChatRoomStatusChangedResult) => void): void; + /** + * 收到群聊已读回执请求的监听 + */ + setOnGroupMessageReadReceiptRequestReceivedListener(callback?: (res: OnGroupMessageReadReceiptRequestReceivedResult) => void): void; + /** + * 收到群聊已读回执响应的监听 + */ + setOnGroupMessageReadReceiptResponseReceivedListener(callback?: (res: OnGroupMessageReadReceiptResponseReceivedResult) => void): void; + /** + * [connect] 的接口监听,收到链接结果的回调 + */ + setOnConnectedListener(callback?: (res: OnConnectedResult) => void): void; + /** + * [connect] 的接口监听,数据库打开时发生的回调 + */ + setOnDatabaseOpenedListener(callback?: (res: OnDatabaseOpenedResult) => void): void; + /** + * [loadConversation] 的接口监听 + */ + setOnConversationLoadedListener(callback?: (res: OnConversationLoadedResult) => void): void; + /** + * [loadConversations] 的接口监听 + */ + setOnConversationsLoadedListener(callback?: (res: OnConversationsLoadedResult) => void): void; + /** + * [removeConversation] 的接口监听 + */ + setOnConversationRemovedListener(callback?: (res: OnConversationRemovedResult) => void): void; + /** + * [removeConversations] 的接口监听 + */ + setOnConversationsRemovedListener(callback?: (res: OnConversationsRemovedResult) => void): void; + /** + * [loadTotalUnreadCount] 的接口监听 + */ + setOnTotalUnreadCountLoadedListener(callback?: (res: OnTotalUnreadCountLoadedResult) => void): void; + /** + * [loadUnreadCount] 的接口监听 + */ + setOnUnreadCountLoadedListener(callback?: (res: OnUnreadCountLoadedResult) => void): void; + /** + * [loadUnreadCountByConversationTypes] 的接口监听 + */ + setOnUnreadCountByConversationTypesLoadedListener(callback?: (res: OnUnreadCountByConversationTypesLoadedResult) => void): void; + /** + * [loadUnreadMentionedCount] 的接口监听 + */ + setOnUnreadMentionedCountLoadedListener(callback?: (res: OnUnreadMentionedCountLoadedResult) => void): void; + /** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupAllUnreadCountLoadedListener(callback?: (res: OnUltraGroupAllUnreadCountLoadedResult) => void): void; + /** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupAllUnreadMentionedCountLoadedListener(callback?: (res: OnUltraGroupAllUnreadMentionedCountLoadedResult) => void): void; + /** + * + * 超级群列表同步完成的回调 + * + */ + setOnUltraGroupConversationsSyncedListener(callback?: (res: OnUltraGroupConversationsSyncedResult) => void): void; + /** + * [clearUnreadCount] 的接口监听 + */ + setOnUnreadCountClearedListener(callback?: (res: OnUnreadCountClearedResult) => void): void; + /** + * [saveDraftMessage] 的接口监听 + */ + setOnDraftMessageSavedListener(callback?: (res: OnDraftMessageSavedResult) => void): void; + /** + * [clearDraftMessage] 的接口监听 + */ + setOnDraftMessageClearedListener(callback?: (res: OnDraftMessageClearedResult) => void): void; + /** + * [loadDraftMessage] 的接口监听 + */ + setOnDraftMessageLoadedListener(callback?: (res: OnDraftMessageLoadedResult) => void): void; + /** + * [loadBlockedConversations] 的接口监听 + */ + setOnBlockedConversationsLoadedListener(callback?: (res: OnBlockedConversationsLoadedResult) => void): void; + /** + * [changeConversationTopStatus] 的接口监听 + */ + setOnConversationTopStatusChangedListener(callback?: (res: OnConversationTopStatusChangedResult) => void): void; + /** + * [loadConversationTopStatus] 的接口监听 + */ + setOnConversationTopStatusLoadedListener(callback?: (res: OnConversationTopStatusLoadedResult) => void): void; + /** + * [syncConversationReadStatus] 的接口监听 + */ + setOnConversationReadStatusSyncedListener(callback?: (res: OnConversationReadStatusSyncedResult) => void): void; + /** + * [sendMessage] 的接口监听 + */ + setOnMessageAttachedListener(callback?: (res: OnMessageAttachedResult) => void): void; + /** + * [sendMessage] 的接口监听 + */ + setOnMessageSentListener(callback?: (res: OnMessageSentResult) => void): void; + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageAttachedListener(callback?: (res: OnMediaMessageAttachedResult) => void): void; + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageSendingListener(callback?: (res: OnMediaMessageSendingResult) => void): void; + /** + * [cancelSendingMediaMessage] 的接口监听 + */ + setOnSendingMediaMessageCanceledListener(callback?: (res: OnSendingMediaMessageCanceledResult) => void): void; + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageSentListener(callback?: (res: OnMediaMessageSentResult) => void): void; + /** + * [downloadMediaMessage] 的接口监听 + */ + setOnMediaMessageDownloadingListener(callback?: (res: OnMediaMessageDownloadingResult) => void): void; + /** + * [downloadMediaMessage] 的接口监听 + */ + setOnMediaMessageDownloadedListener(callback?: (res: OnMediaMessageDownloadedResult) => void): void; + /** + * [cancelDownloadingMediaMessage] 的接口监听 + */ + setOnDownloadingMediaMessageCanceledListener(callback?: (res: OnDownloadingMediaMessageCanceledResult) => void): void; + /** + * [loadMessages] 的接口监听 + */ + setOnMessagesLoadedListener(callback?: (res: OnMessagesLoadedResult) => void): void; + /** + * [loadUnreadMentionedMessages] 的接口监听 + */ + setOnUnreadMentionedMessagesLoadedListener(callback?: (res: OnUnreadMentionedMessagesLoadedResult) => void): void; + /** + * [loadFirstUnreadMessage] 的接口监听 + */ + setOnFirstUnreadMessageLoadedListener(callback?: (res: OnFirstUnreadMessageLoadedResult) => void): void; + /** + * [insertMessage] 的接口监听 + */ + setOnMessageInsertedListener(callback?: (res: OnMessageInsertedResult) => void): void; + /** + * [insertMessages] 的接口监听 + */ + setOnMessagesInsertedListener(callback?: (res: OnMessagesInsertedResult) => void): void; + /** + * [clearMessages] 的接口监听 + */ + setOnMessagesClearedListener(callback?: (res: OnMessagesClearedResult) => void): void; + /** + * [deleteLocalMessages] 的接口监听 + */ + setOnLocalMessagesDeletedListener(callback?: (res: OnLocalMessagesDeletedResult) => void): void; + /** + * [deleteMessages] 的接口监听 + */ + setOnMessagesDeletedListener(callback?: (res: OnMessagesDeletedResult) => void): void; + /** + * [recallMessage] 的接口监听 + */ + setOnMessageRecalledListener(callback?: (res: OnMessageRecalledResult) => void): void; + /** + * [sendPrivateReadReceiptMessage] 的接口监听 + */ + setOnPrivateReadReceiptMessageSentListener(callback?: (res: OnPrivateReadReceiptMessageSentResult) => void): void; + /** + * [updateMessageExpansion] 的接口监听 + */ + setOnMessageExpansionUpdatedListener(callback?: (res: OnMessageExpansionUpdatedResult) => void): void; + /** + * [removeMessageExpansionForKeys] 的接口监听 + */ + setOnMessageExpansionForKeysRemovedListener(callback?: (res: OnMessageExpansionForKeysRemovedResult) => void): void; + /** + * [changeMessageReceiveStatus] 的接口监听 + */ + setOnMessageReceiveStatusChangedListener(callback?: (res: OnMessageReceiveStatusChangedResult) => void): void; + /** + * [changeMessageSentStatus] 的接口监听 + */ + setOnMessageSentStatusChangedListener(callback?: (res: OnMessageSentStatusChangedResult) => void): void; + /** + * [joinChatRoom] 的接口监听 + */ + setOnChatRoomJoinedListener(callback?: (res: OnChatRoomJoinedResult) => void): void; + /** + * 正在加入聊天室的回调 + */ + setOnChatRoomJoiningListener(callback?: (res: OnChatRoomJoiningResult) => void): void; + /** + * [leaveChatRoom] 的接口监听 + */ + setOnChatRoomLeftListener(callback?: (res: OnChatRoomLeftResult) => void): void; + /** + * [loadChatRoomMessages] 的接口监听 + */ + setOnChatRoomMessagesLoadedListener(callback?: (res: OnChatRoomMessagesLoadedResult) => void): void; + /** + * [addChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryAddedListener(callback?: (res: OnChatRoomEntryAddedResult) => void): void; + /** + * [addChatRoomEntries] 的接口监听 + */ + setOnChatRoomEntriesAddedListener(callback?: (res: OnChatRoomEntriesAddedResult) => void): void; + /** + * [loadChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryLoadedListener(callback?: (res: OnChatRoomEntryLoadedResult) => void): void; + /** + * [loadChatRoomAllEntries] 的接口监听 + */ + setOnChatRoomAllEntriesLoadedListener(callback?: (res: OnChatRoomAllEntriesLoadedResult) => void): void; + /** + * [removeChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryRemovedListener(callback?: (res: OnChatRoomEntryRemovedResult) => void): void; + /** + * [removeChatRoomEntries] 的接口监听 + */ + setOnChatRoomEntriesRemovedListener(callback?: (res: OnChatRoomEntriesRemovedResult) => void): void; + /** + * [addToBlacklist] 的接口监听 + */ + setOnBlacklistAddedListener(callback?: (res: OnBlacklistAddedResult) => void): void; + /** + * [removeFromBlacklist] 的接口监听 + */ + setOnBlacklistRemovedListener(callback?: (res: OnBlacklistRemovedResult) => void): void; + /** + * [loadBlacklistStatus] 的接口监听 + */ + setOnBlacklistStatusLoadedListener(callback?: (res: OnBlacklistStatusLoadedResult) => void): void; + /** + * [loadBlacklist] 的接口监听 + */ + setOnBlacklistLoadedListener(callback?: (res: OnBlacklistLoadedResult) => void): void; + /** + * [searchMessages] 的接口监听 + */ + setOnMessagesSearchedListener(callback?: (res: OnMessagesSearchedResult) => void): void; + /** + * [searchMessagesByTimeRange] 的接口监听 + */ + setOnMessagesSearchedByTimeRangeListener(callback?: (res: OnMessagesSearchedByTimeRangeResult) => void): void; + /** + * [searchMessagesByUserId] 的接口监听 + */ + setOnMessagesSearchedByUserIdListener(callback?: (res: OnMessagesSearchedByUserIdResult) => void): void; + /** + * [searchConversations] 的接口监听 + */ + setOnConversationsSearchedListener(callback?: (res: OnConversationsSearchedResult) => void): void; + /** + * sendGroupReadReceiptRequest 的接口监听 + */ + setOnGroupReadReceiptRequestSentListener(callback?: (res: OnGroupReadReceiptRequestSentResult) => void): void; + /** + * [sendGroupReadReceiptResponse] 的接口监听 + */ + setOnGroupReadReceiptResponseSentListener(callback?: (res: OnGroupReadReceiptResponseSentResult) => void): void; + /** + * [changeNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursChangedListener(callback?: (res: OnNotificationQuietHoursChangedResult) => void): void; + /** + * [removeNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursRemovedListener(callback?: (res: OnNotificationQuietHoursRemovedResult) => void): void; + /** + * [loadNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursLoadedListener(callback?: (res: OnNotificationQuietHoursLoadedResult) => void): void; + /** + * [changeConversationNotificationLevel] 的接口监听 + */ + setOnConversationNotificationLevelChangedListener(callback?: (res: OnConversationNotificationLevelChangedResult) => void): void; + /** + * [loadConversationNotificationLevel] 的接口监听 + */ + setOnConversationNotificationLevelLoadedListener(callback?: (res: OnConversationNotificationLevelLoadedResult) => void): void; + /** + * [changeConversationTypeNotificationLevel] 的接口监听 + */ + setOnConversationTypeNotificationLevelChangedListener(callback?: (res: OnConversationTypeNotificationLevelChangedResult) => void): void; + /** + * [loadConversationTypeNotificationLevel] 的接口监听 + */ + setOnConversationTypeNotificationLevelLoadedListener(callback?: (res: OnConversationTypeNotificationLevelLoadedResult) => void): void; + /** + * [changeUltraGroupDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupDefaultNotificationLevelChangedListener(callback?: (res: OnUltraGroupDefaultNotificationLevelChangedResult) => void): void; + /** + * [loadUltraGroupDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupDefaultNotificationLevelLoadedListener(callback?: (res: OnUltraGroupDefaultNotificationLevelLoadedResult) => void): void; + /** + * [changeUltraGroupChannelDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupChannelDefaultNotificationLevelChangedListener(callback?: (res: OnUltraGroupChannelDefaultNotificationLevelChangedResult) => void): void; + /** + * [loadUltraGroupChannelDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupChannelDefaultNotificationLevelLoadedListener(callback?: (res: OnUltraGroupChannelDefaultNotificationLevelLoadedResult) => void): void; + /** + * [changePushContentShowStatus] 的接口监听 + */ + setOnPushContentShowStatusChangedListener(callback?: (res: OnPushContentShowStatusChangedResult) => void): void; + /** + * [changePushLanguage] 的接口监听 + */ + setOnPushLanguageChangedListener(callback?: (res: OnPushLanguageChangedResult) => void): void; + /** + * [changePushReceiveStatus] 的接口监听 + */ + setOnPushReceiveStatusChangedListener(callback?: (res: OnPushReceiveStatusChangedResult) => void): void; + /** + * [loadMessageCount] 的接口监听 + */ + setOnMessageCountLoadedListener(callback?: (res: OnMessageCountLoadedResult) => void): void; + /** + * [loadTopConversations] 的接口监听 + */ + setOnTopConversationsLoadedListener(callback?: (res: OnTopConversationsLoadedResult) => void): void; + /** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息存入数据库的回调 + */ + setOnGroupMessageToDesignatedUsersAttachedListener(callback?: (res: OnGroupMessageToDesignatedUsersAttachedResult) => void): void; + /** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息发送完成的回调 + */ + setOnGroupMessageToDesignatedUsersSentListener(callback?: (res: OnGroupMessageToDesignatedUsersSentResult) => void): void; + /** + * [syncUltraGroupReadStatus] 的接口监听 + */ + setOnUltraGroupReadStatusSyncedListener(callback?: (res: OnUltraGroupReadStatusSyncedResult) => void): void; + /** + * [loadConversationsForAllChannel] 的接口监听 + */ + setOnConversationsLoadedForAllChannelListener(callback?: (res: OnConversationsLoadedForAllChannelResult) => void): void; + /** + * [loadUltraGroupUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupUnreadMentionedCountLoadedListener(callback?: (res: OnUltraGroupUnreadMentionedCountLoadedResult) => void): void; + /** + * [loadUltraGroupUnreadCount] 的接口监听 + */ + setOnUltraGroupUnreadCountLoadedListener(callback?: (res: OnUltraGroupUnreadCountLoadedResult) => void): void; + /** + * [modifyUltraGroupMessage] 的接口监听 + */ + setOnUltraGroupMessageModifiedListener(callback?: (res: OnUltraGroupMessageModifiedResult) => void): void; + /** + * [recallUltraGroupMessage] 的接口监听 + */ + setOnUltraGroupMessageRecalledListener(callback?: (res: OnUltraGroupMessageRecalledResult) => void): void; + /** + * [clearUltraGroupMessages] 的接口监听 + */ + setOnUltraGroupMessagesClearedListener(callback?: (res: OnUltraGroupMessagesClearedResult) => void): void; + /** + * [clearUltraGroupMessagesForAllChannel] 的接口监听 + */ + setOnUltraGroupMessagesClearedForAllChannelListener(callback?: (res: OnUltraGroupMessagesClearedForAllChannelResult) => void): void; + /** + * [sendUltraGroupTypingStatus] 的接口监听 + */ + setOnUltraGroupTypingStatusSentListener(callback?: (res: OnUltraGroupTypingStatusSentResult) => void): void; + /** + * [loadBatchRemoteUltraGroupMessages] 的接口监听 + */ + setOnBatchRemoteUltraGroupMessagesLoadedListener(callback?: (res: OnBatchRemoteUltraGroupMessagesLoadedResult) => void): void; + /** + * [updateUltraGroupMessageExpansion] 的接口监听 + */ + setOnUltraGroupMessageExpansionUpdatedListener(callback?: (res: OnUltraGroupMessageExpansionUpdatedResult) => void): void; + /** + * [removeUltraGroupMessageExpansionForKeys] 的接口监听 + */ + setOnUltraGroupMessageExpansionForKeysRemovedListener(callback?: (res: OnUltraGroupMessageExpansionForKeysRemovedResult) => void): void; +} diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.js b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.js new file mode 100644 index 0000000..d95467c --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/RCIMEngine.js @@ -0,0 +1,4208 @@ +const RCUniIM = uni.requireNativePlugin('RongCloud-IM-V2-RCUniIMV2'); +import { RCIMIWPushType, RCIMIWErrorCode } from './RCIMDefines'; +import * as RCIMLog from './utils/RCIMLog'; +import { AssertRules, validate } from './utils/assert'; +import { RCIMIWLogLevel, } from './RCIMDefines'; +const paramErrorPromise = Promise.resolve(RCIMIWErrorCode.paramError); +let instance; +export default class RCIMIWEngine { + static _invokeMethod(name, params) { + RCIMLog.log(RCIMIWLogLevel.info, `invokeMethod methodName: ${name}, params:${JSON.stringify(params)}`); + return new Promise((resolve, _) => { + RCUniIM.invokeMethod({ name, params }, (res) => { + resolve(res); + }); + }); + } + _invokeMethod(name, callback, params) { + RCIMLog.log(RCIMIWLogLevel.info, `invokeMethod methodName: ${name}, params:${JSON.stringify(params)}`); + return new Promise((resolve, _) => { + if (callback) { + RCUniIM.invokeMethod({ name, params }, (res) => { + resolve(res); + }, callback); + } + else { + RCUniIM.invokeMethod({ name, params }, (res) => { + resolve(res); + }); + } + }); + } + _setListener(eventName, callback) { + RCIMLog.log(RCIMIWLogLevel.info, `setListener eventName: ${eventName}, callback:${callback != null}`); + // 因为单个事件名只支持设置一个监听,所以要先移除已有的监听。 + RCUniIM.removeAllEventListeners(eventName); + if (callback) { + let listener = (res) => { + callback(res.data); + }; + RCUniIM.addEventListener(eventName, listener); + } + } + /** + * 初始化 IM 对象 + * @param appKey 融云后台申请的应用 appKey + * @param options 全局配置项 + * @returns 创建的 IM 对象 + */ + static async create(appKey, options = {}) { + if (instance) { + return new Promise((resolve) => resolve(instance)); + } + let code = await RCIMIWEngine._invokeMethod('create', { appKey, options }); + if (code === 0) { + instance = new RCIMIWEngine(); + return instance; + } + return new Promise((resolve) => resolve(null)); + } + /** + * 销毁 IM 对象 + */ + async destroy() { + let code = await this._invokeMethod('destroy', null); + if (code === 0) { + instance = null; + } + return code; + } + /** + * 注册推送 token 给融云,用于不集成融云推送 SDK 但需使用融云消息推送能力。 + * 如果是 iOS 平台时,会忽略传入的 pushType 值,只使用 pushToken 参数。 + * 该方法需要在 IM 初始化后 3 秒再调用。 + * @param pushType 推送厂商类型 + * @param pushToken 推送 token (厂商接口 或 三方推送 SDK 提供的) + * @returns 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + registerPushToken(pushType, pushToken) { + if (!validate('pushType', pushType, AssertRules.NUMBER, true) || + !validate('pushToken', pushToken, AssertRules.STRING, true)) { + return paramErrorPromise; + } + const Platform = uni.getSystemInfoSync().platform; + if (Platform == 'android' && pushType == RCIMIWPushType.iOS) { + RCIMLog.log(RCIMIWLogLevel.error, 'pushType iOS only support iOS platform'); + return paramErrorPromise; + } + return this._invokeMethod('registerPushToken', null, { pushType, pushToken }); + } + // /** + // * 根据消息 id 获取消息体(本地数据库索引唯一值)。 + // * @param messageId 消息的 messageId,可在消息对象中获取 + // */ + // getMessageById(messageId: number): Promise<{code: number, message: RCIMIWMessage}> { + // return this._invokeMethod('getMessageById', {messageId}); + // } + // /** + // * 通过全局唯一 id 获取消息实体。 + // * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值。 + // */ + // getMessageByUId(messageUId: string): Promise<{code: number, message: RCIMIWMessage}> { + // return this._invokeMethod('getMessageByUId', {messageUId}); + // } + /** + * 注册原生自定义普通消息 + * @param messageIdentifier 消息的唯一标识 + * @param persistentFlag 消息的存储策略 + * @return 当次接口操作的状态码。0 代表调用成功,非 0 代表当前接口调用操作失败,详细错误参考错误码 + */ + registerNativeCustomMessage(messageIdentifier, persistentFlag) { + if (!validate('messageIdentifier', messageIdentifier, AssertRules.STRING, true) || + !validate('persistentFlag', persistentFlag, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('registerNativeCustomMessage', resultCallback, { messageIdentifier, persistentFlag }); + } + /** + * 注册原生自定义媒体消息 + * @param messageIdentifier 消息的唯一标识 + * @param persistentFlag 消息的存储策略 + * @return 当次接口操作的状态码。0 代表调用成功,非 0 代表当前接口调用操作失败,详细错误参考错误码 + */ + registerNativeCustomMediaMessage(messageIdentifier, persistentFlag) { + if (!validate('messageIdentifier', messageIdentifier, AssertRules.STRING, true) || + !validate('persistentFlag', persistentFlag, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('registerNativeCustomMediaMessage', resultCallback, { + messageIdentifier, + persistentFlag, + }); + } + /** + * 连接融云服务器,在整个应用程序全局,只需要调用一次。调用此接口返回非业务错误码时,SDK 会启动重连机制进行重连;如果仍没有连接成功,会在设备网络状态变化时再次进行重连。 + * @param token 调用 server api 获取到的 token + * @param timeout 连接超时时间,单位:秒。 + * timeLimit <= 0,则 IM 将一直连接,直到连接成功或者无法连接(如 token 非法) + * timeLimit > 0,则 IM 将最多连接 timeLimit 秒 + * 如果在 timeLimit 秒内连接成功,后面再发生了网络变化或前后台切换,SDK 会自动重连; 如果在 timeLimit 秒无法连接成功则不再进行重连,通过 listener 告知连接超时,您需要再自行调用 connect 接口 + * @param callback 链接事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onConnected] + */ + connect(token, timeout, callback) { + if (!validate('token', token, AssertRules.STRING, true) || + !validate('timeout', timeout, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onDatabaseOpened') { + let { code } = res; + callback.onDatabaseOpened?.({ code }); + } + if (res.callbackName === 'onConnected') { + let { code, userId } = res; + callback.onConnected?.({ code, userId }); + } + }; + } + return this._invokeMethod('connect', resultCallback, { token, timeout }); + } + /** + * 断开链接 + * 注:因为 SDK 在前后台切换或者网络出现异常都会自动重连,保证连接可靠性。 所以除非您的 App 逻辑需要登出,否则一般不需要调用此方法进行手动断开 + * @param receivePush 退出后是否接收 push,true:断开后接收远程推送,false:断开后不再接收远程推送 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + disconnect(receivePush) { + if (!validate('receivePush', receivePush, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('disconnect', resultCallback, { receivePush }); + } + /** + * 构建文本消息 + * @param type 会话类型, + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param text 文本内容 + * @return 文本消息实体 + */ + createTextMessage(type, targetId, channelId, text) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('text', text, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createTextMessage', resultCallback, { type, targetId, channelId, text }); + } + /** + * 构建图片消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 图片消息的本地路径,必须为有效路径 + * @return 图片消息实体 + */ + createImageMessage(type, targetId, channelId, path) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('path', path, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createImageMessage', resultCallback, { type, targetId, channelId, path }); + } + /** + * 构建文件消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 文件消息的本地路径,必须为有效路径 + * @return 文件消息实体 + */ + createFileMessage(type, targetId, channelId, path) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('path', path, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createFileMessage', resultCallback, { type, targetId, channelId, path }); + } + /** + * 构建小视频消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 小视频消息的本地路径,必须为有效路径 + * @param duration 小视频消息的视频时长 + * @return 视频消息实体 + */ + createSightMessage(type, targetId, channelId, path, duration) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('path', path, AssertRules.STRING, true) || + !validate('duration', duration, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createSightMessage', resultCallback, { type, targetId, channelId, path, duration }); + } + /** + * 构建语音消息 (高清语音) + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path 语音消息的本地路径,必须为有效路径 + * @param duration 语音消息的消息时长 + * @return 语音消息的实体 + */ + createVoiceMessage(type, targetId, channelId, path, duration) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('path', path, AssertRules.STRING, true) || + !validate('duration', duration, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createVoiceMessage', resultCallback, { type, targetId, channelId, path, duration }); + } + /** + * 构建引用消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param referenceMessage 引用的消息 + * @param text 引用的文本内容 + * @return 引用消息实体 + */ + createReferenceMessage(type, targetId, channelId, referenceMessage, text) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('referenceMessage', referenceMessage, AssertRules.OBJECT, true) || + !validate('text', text, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createReferenceMessage', resultCallback, { + type, + targetId, + channelId, + referenceMessage, + text, + }); + } + /** + * 构建 GIF 消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param path GIF 消息的本地路径 + * @return GIF 消息实体 + */ + createGIFMessage(type, targetId, channelId, path) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('path', path, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createGIFMessage', resultCallback, { type, targetId, channelId, path }); + } + /** + * 构建自定义消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param policy 消息的存储策略 + * @param messageIdentifier 消息的标识符,需唯一 + * @param fields 消息的内容键值对 + * @return 自定义消息实体 + */ + createCustomMessage(type, targetId, channelId, policy, messageIdentifier, fields) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('policy', policy, AssertRules.NUMBER, true) || + !validate('messageIdentifier', messageIdentifier, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createCustomMessage', resultCallback, { + type, + targetId, + channelId, + policy, + messageIdentifier, + fields, + }); + } + /** + * 构建位置消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param longitude 经度 + * @param latitude 纬度 + * @param poiName POI 信息 + * @param thumbnailPath 缩略图本地路径,必须为有效路径 + * @return 位置消息实体 + */ + createLocationMessage(type, targetId, channelId, longitude, latitude, poiName, thumbnailPath) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('longitude', longitude, AssertRules.NUMBER, true) || + !validate('latitude', latitude, AssertRules.NUMBER, true) || + !validate('poiName', poiName, AssertRules.STRING, true) || + !validate('thumbnailPath', thumbnailPath, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createLocationMessage', resultCallback, { + type, + targetId, + channelId, + longitude, + latitude, + poiName, + thumbnailPath, + }); + } + /** + * 构建原生自定义普通消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageIdentifier 消息的标识符,需唯一 + * @param fields 消息的内容键值对 + * @return 原生自定义普通消息 + */ + createNativeCustomMessage(type, targetId, channelId, messageIdentifier, fields) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('messageIdentifier', messageIdentifier, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createNativeCustomMessage', resultCallback, { + type, + targetId, + channelId, + messageIdentifier, + fields, + }); + } + /** + * 构建原生自定义媒体消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageIdentifier 消息的标识符,需唯一 + * @param path 媒体文件的本地路径,必须为有效路径 + * @param fields 消息的内容键值对 + * @return 原生自定义媒体消息 + */ + createNativeCustomMediaMessage(type, targetId, channelId, messageIdentifier, path, fields) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('messageIdentifier', messageIdentifier, AssertRules.STRING, true) || + !validate('path', path, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('createNativeCustomMediaMessage', resultCallback, { + type, + targetId, + channelId, + messageIdentifier, + path, + fields, + }); + } + /** + * 发送普通消息 + * @param message 发送的消息实体 + * @param callback 发送消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onMessageAttached],[onMessageSent] + */ + sendMessage(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageSaved') { + let { message } = res; + callback.onMessageSaved?.({ message }); + } + if (res.callbackName === 'onMessageSent') { + let { code, message } = res; + callback.onMessageSent?.({ code, message }); + } + }; + } + return this._invokeMethod('sendMessage', resultCallback, { message }); + } + /** + * 发送媒体消息 + * @param message 发送的媒体消息实体 + * @param listener 发送媒体消息的事件监听 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onMediaMessageSending],[onMediaMessageAttached],[onMediaMessageSent] + */ + sendMediaMessage(message, listener) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (listener) { + resultCallback = (res) => { + if (res.callbackName === 'onMediaMessageSaved') { + let { message } = res; + listener.onMediaMessageSaved?.({ message }); + } + if (res.callbackName === 'onMediaMessageSending') { + let { message, progress } = res; + listener.onMediaMessageSending?.({ message, progress }); + } + if (res.callbackName === 'onSendingMediaMessageCanceled') { + let { message } = res; + listener.onSendingMediaMessageCanceled?.({ message }); + } + if (res.callbackName === 'onMediaMessageSent') { + let { code, message } = res; + listener.onMediaMessageSent?.({ code, message }); + } + }; + } + return this._invokeMethod('sendMediaMessage', resultCallback, { message }); + } + /** + * 取消发送媒体消息 + * @param message 需要取消发送的媒体消息实体 + * @param callback 取消发送媒体消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener 接口回调可以监听 [onSendingMediaMessageCanceled] + */ + cancelSendingMediaMessage(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onCancelSendingMediaMessageCalled') { + let { code, message } = res; + callback.onCancelSendingMediaMessageCalled?.({ code, message }); + } + }; + } + return this._invokeMethod('cancelSendingMediaMessage', resultCallback, { message }); + } + /** + * 下载媒体消息 + * @param message 需要下载的媒体消息实体 + * @param listener 下载媒体消息的事件监听 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMediaMessageDownloaded], [onMediaMessageDownloading] + */ + downloadMediaMessage(message, listener) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (listener) { + resultCallback = (res) => { + if (res.callbackName === 'onMediaMessageDownloading') { + let { message, progress } = res; + listener.onMediaMessageDownloading?.({ message, progress }); + } + if (res.callbackName === 'onDownloadingMediaMessageCanceled') { + let { message } = res; + listener.onDownloadingMediaMessageCanceled?.({ message }); + } + if (res.callbackName === 'onMediaMessageDownloaded') { + let { code, message } = res; + listener.onMediaMessageDownloaded?.({ code, message }); + } + }; + } + return this._invokeMethod('downloadMediaMessage', resultCallback, { message }); + } + /** + * 取消下载媒体消息 + * @param message 需要取消下载的媒体消息实体 + * @param callback 取消下载媒体消息的事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDownloadingMediaMessageCanceled] + */ + cancelDownloadingMediaMessage(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onCancelDownloadingMediaMessageCalled') { + let { code, message } = res; + callback.onCancelDownloadingMediaMessageCalled?.({ code, message }); + } + }; + } + return this._invokeMethod('cancelDownloadingMediaMessage', resultCallback, { message }); + } + /** + * 加载某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationLoaded] + * @deprecated 用 {@link #getConversation(RCIMIWConversationType, String, String, IRCIMIWGetConversationCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversation(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversation', resultCallback, { type, targetId, channelId }); + } + /** + * 获取某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param callback 获取会话事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationLoaded] + */ + getConversation(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversation', resultCallback, { type, targetId, channelId }); + } + /** + * 加载某些会话 + * @param conversationTypes 会话类型 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param startTime 时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据 + * @param count 查询的数量, 0 < count <= 50 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoaded] + * @deprecated 用 {@link #getConversations(List, String, long, int, IRCIMIWGetConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversations(conversationTypes, channelId, startTime, count) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('startTime', startTime, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversations', resultCallback, { + conversationTypes, + channelId, + startTime, + count, + }); + } + /** + * 获取某些会话 + * @param conversationTypes 会话类型 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param startTime 时间戳(毫秒),获取小于此时间戳的会话,传 0 为查询最新数据 + * @param count 查询的数量, 0 < count <= 50 + * @param callback 获取会话列表事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoaded] + */ + getConversations(conversationTypes, channelId, startTime, count, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('startTime', startTime, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversations', resultCallback, { + conversationTypes, + channelId, + startTime, + count, + }); + } + /** + * 获取指定类型的含有未读消息的会话列表 + * @param conversationTypes 支持单聊、群聊、系统会话 + * @param callback 获取会话列表事件回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getUnreadConversations(conversationTypes, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUnreadConversations', resultCallback, { conversationTypes }); + } + /** + * 移除某个会话 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可 + * @param callback 移除会话事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationRemoved] + */ + removeConversation(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationRemoved') { + let { code } = res; + callback.onConversationRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeConversation', resultCallback, { type, targetId, channelId }); + } + /** + * 根据会话类型移除会话 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 移除会话列表事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsRemoved] + */ + removeConversations(conversationTypes, channelId, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationsRemoved') { + let { code } = res; + callback.onConversationsRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeConversations', resultCallback, { conversationTypes, channelId }); + } + /** + * 加载某个会话的未读数 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountLoaded] + * @deprecated 用 {@link #getUnreadCount(RCIMIWConversationType, String, String, IRCIMIWGetUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadCount(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUnreadCount', resultCallback, { type, targetId, channelId }); + } + /** + * 获取某个会话的未读数 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取会话未读数事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountLoaded] + */ + getUnreadCount(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUnreadCount', resultCallback, { type, targetId, channelId }); + } + /** + * 加载所有未读数 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTotalUnreadCountLoaded] + * @deprecated 用 {@link #getTotalUnreadCount(String, IRCIMIWGetTotalUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadTotalUnreadCount(channelId) { + if (!validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadTotalUnreadCount', resultCallback, { channelId }); + } + /** + * 获取所有未读数 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取所有未读数事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTotalUnreadCountLoaded] + */ + getTotalUnreadCount(channelId, callback) { + if (!validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getTotalUnreadCount', resultCallback, { channelId }); + } + /** + * 加载会话中未读的 @ 消息数量。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUnreadMentionedCount(RCIMIWConversationType, String, String, IRCIMIWGetUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadMentionedCount(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUnreadMentionedCount', resultCallback, { type, targetId, channelId }); + } + /** + * 获取会话中未读的 @ 消息数量。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 获取会话中未读的 @ 消息数量事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedCountLoaded] + */ + getUnreadMentionedCount(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUnreadMentionedCount', resultCallback, { type, targetId, channelId }); + } + /** + * 加载当前用户加入的所有超级群会话的未读消息数的总和。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadCountLoaded] + * @deprecated 用 {@link #getUltraGroupAllUnreadCount(IRCIMIWGetUltraGroupAllUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupAllUnreadCount() { + let resultCallback; + return this._invokeMethod('loadUltraGroupAllUnreadCount', resultCallback, {}); + } + /** + * 获取当前用户加入的所有超级群会话的未读消息数的总和。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadCountLoaded] + */ + getUltraGroupAllUnreadCount(callback) { + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupAllUnreadCount', resultCallback, {}); + } + /** + * 加载当前用户加入的所有超级群会话中的未读 @ 消息数的总和。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUltraGroupAllUnreadMentionedCount(IRCIMIWGetUltraGroupAllUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupAllUnreadMentionedCount() { + let resultCallback; + return this._invokeMethod('loadUltraGroupAllUnreadMentionedCount', resultCallback, {}); + } + /** + * 获取当前用户加入的所有超级群会话中的未读 @ 消息数的总和。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupAllUnreadMentionedCountLoaded] + */ + getUltraGroupAllUnreadMentionedCount(callback) { + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupAllUnreadMentionedCount', resultCallback, {}); + } + /** + * 获取指定会话的未读消息数 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadCountLoaded] + * @deprecated 用 {@link #getUltraGroupUnreadCount(String, IRCIMIWGetUltraGroupUnreadCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupUnreadCount(targetId) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUltraGroupUnreadCount', resultCallback, { targetId }); + } + /** + * 获取指定会话的未读消息数 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadCountLoaded] + */ + getUltraGroupUnreadCount(targetId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupUnreadCount', resultCallback, { targetId }); + } + /** + * 获取超级群会话中被 @ 的消息数 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadMentionedCountLoaded] + * @deprecated 用 {@link #getUltraGroupUnreadMentionedCount(String, IRCIMIWGetUltraGroupUnreadMentionedCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupUnreadMentionedCount(targetId) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUltraGroupUnreadMentionedCount', resultCallback, { targetId }); + } + /** + * 获取超级群会话中被 @ 的消息数 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupUnreadMentionedCountLoaded] + */ + getUltraGroupUnreadMentionedCount(targetId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupUnreadMentionedCount', resultCallback, { targetId }); + } + /** + * 根据会话类型加载未读数 + * 注:不支持聊天室! + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param contain 是否包含免打扰消息的未读消息数。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountByConversationTypesLoaded] + * @deprecated 用 {@link #getUnreadCountByConversationTypes(List, String, boolean, IRCIMIWGetUnreadCountByConversationTypesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadCountByConversationTypes(conversationTypes, channelId, contain) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('contain', contain, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUnreadCountByConversationTypes', resultCallback, { + conversationTypes, + channelId, + contain, + }); + } + /** + * 根据会话类型加载未读数 + * 注:不支持聊天室! + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param contain 是否包含免打扰消息的未读消息数。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountByConversationTypesLoaded] + */ + getUnreadCountByConversationTypes(conversationTypes, channelId, contain, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('contain', contain, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUnreadCountByConversationTypes', resultCallback, { + conversationTypes, + channelId, + contain, + }); + } + /** + * 清除某个会话中的未读消息数。 + * 注:不支持聊天室! + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 该会话已阅读的最后一条消息的发送时间戳,清除所有传入当前最新时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadCountCleared] + */ + clearUnreadCount(type, targetId, channelId, timestamp, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUnreadCountCleared') { + let { code } = res; + callback.onUnreadCountCleared?.({ code }); + } + }; + } + return this._invokeMethod('clearUnreadCount', resultCallback, { type, targetId, channelId, timestamp }); + } + /** + * 保存会话草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param draft 草稿的文字内容。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageSaved] + */ + saveDraftMessage(type, targetId, channelId, draft, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('draft', draft, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onDraftMessageSaved') { + let { code } = res; + callback.onDraftMessageSaved?.({ code }); + } + }; + } + return this._invokeMethod('saveDraftMessage', resultCallback, { type, targetId, channelId, draft }); + } + /** + * 加载会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageLoaded] + * @deprecated 用 {@link #getDraftMessage(RCIMIWConversationType, String, String, IRCIMIWGetDraftMessageCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadDraftMessage(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadDraftMessage', resultCallback, { type, targetId, channelId }); + } + /** + * 获取会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageLoaded] + */ + getDraftMessage(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getDraftMessage', resultCallback, { type, targetId, channelId }); + } + /** + * 删除指定会话中的草稿信息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onDraftMessageCleared] + */ + clearDraftMessage(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onDraftMessageCleared') { + let { code } = res; + callback.onDraftMessageCleared?.({ code }); + } + }; + } + return this._invokeMethod('clearDraftMessage', resultCallback, { type, targetId, channelId }); + } + /** + * 加载免打扰的会话列表。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlockedConversationsLoaded] + * @deprecated 用 {@link #getBlockedConversations(List, String, IRCIMIWGetBlockedConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlockedConversations(conversationTypes, channelId) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadBlockedConversations', resultCallback, { conversationTypes, channelId }); + } + /** + * 获取免打扰的会话列表。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlockedConversationsLoaded] + */ + getBlockedConversations(conversationTypes, channelId, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getBlockedConversations', resultCallback, { conversationTypes, channelId }); + } + /** + * 设置会话的置顶状态。若会话不存在,调用此方法 SDK 自动创建会话并置顶。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param top 是否置顶 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusChanged] + */ + changeConversationTopStatus(type, targetId, channelId, top, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('top', top, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationTopStatusChanged') { + let { code } = res; + callback.onConversationTopStatusChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeConversationTopStatus', resultCallback, { type, targetId, channelId, top }); + } + /** + * 加载会话的置顶状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusLoaded] + * @deprecated 用 {@link #getConversationTopStatus(RCIMIWConversationType, String, String, IRCIMIWGetConversationTopStatusCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationTopStatus(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversationTopStatus', resultCallback, { type, targetId, channelId }); + } + /** + * 获取会话的置顶状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTopStatusLoaded] + */ + getConversationTopStatus(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversationTopStatus', resultCallback, { type, targetId, channelId }); + } + /** + * 同步会话阅读状态。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 会话中已读的最后一条消息的发送时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationReadStatusSynced] + */ + syncConversationReadStatus(type, targetId, channelId, timestamp, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationReadStatusSynced') { + let { code } = res; + callback.onConversationReadStatusSynced?.({ code }); + } + }; + } + return this._invokeMethod('syncConversationReadStatus', resultCallback, { + type, + targetId, + channelId, + timestamp, + }); + } + /** + * 向会话中发送正在输入的状态,目前只支持单聊。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param currentType 当前的状态 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + sendTypingStatus(type, targetId, channelId, currentType) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('currentType', currentType, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('sendTypingStatus', resultCallback, { type, targetId, channelId, currentType }); + } + /** + * 加载历史消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param sentTime 当前消息时间戳 + * @param order 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增) + * @param policy 消息的加载策略。LOCAL:只加载本地,REMOTE:只加载远端,LOCAL_REMOTE:本地远端都加载 + * @param count 获取的消息数量,0 < count <= 20 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesLoaded] + * @deprecated 用 {@link #getMessages(RCIMIWConversationType, String, String, long, RCIMIWTimeOrder, RCIMIWMessageOperationPolicy, int, IRCIMIWGetMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadMessages(type, targetId, channelId, sentTime, order, policy, count) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('sentTime', sentTime, AssertRules.NUMBER, true) || + !validate('order', order, AssertRules.NUMBER, true) || + !validate('policy', policy, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadMessages', resultCallback, { + type, + targetId, + channelId, + sentTime, + order, + policy, + count, + }); + } + /** + * 加载历史消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param sentTime 当前消息时间戳 + * @param order 获取消息的方向。BEFORE:获取 sentTime 之前的消息 (时间递减),AFTER:获取 sentTime 之后的消息 (时间递增) + * @param policy 消息的加载策略。LOCAL:只加载本地,REMOTE:只加载远端,LOCAL_REMOTE:本地远端都加载 + * @param count 获取的消息数量,0 < count <= 20 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesLoaded] + */ + getMessages(type, targetId, channelId, sentTime, order, policy, count, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('sentTime', sentTime, AssertRules.NUMBER, true) || + !validate('order', order, AssertRules.NUMBER, true) || + !validate('policy', policy, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getMessages', resultCallback, { + type, + targetId, + channelId, + sentTime, + order, + policy, + count, + }); + } + /** + * 根据消息 id 获取消息体(本地数据库索引唯一值)。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getMessageById(messageId, callback) { + if (!validate('messageId', messageId, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getMessageById', resultCallback, { messageId }); + } + /** + * 通过全局唯一 id 获取消息实体。 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + getMessageByUId(messageUId, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getMessageByUId', resultCallback, { messageUId }); + } + /** + * 加载第一条未读消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onFirstUnreadMessageLoaded] + * @deprecated 用 {@link #getFirstUnreadMessage(RCIMIWConversationType, String, String, IRCIMIWGetFirstUnreadMessageCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadFirstUnreadMessage(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadFirstUnreadMessage', resultCallback, { type, targetId, channelId }); + } + /** + * 获取第一条未读消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onFirstUnreadMessageLoaded] + */ + getFirstUnreadMessage(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getFirstUnreadMessage', resultCallback, { type, targetId, channelId }); + } + /** + * 加载会话中未读的 @ 消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedMessagesLoaded] + * @deprecated 用 {@link #getUnreadMentionedMessages(RCIMIWConversationType, String, String, IRCIMIWGetUnreadMentionedMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUnreadMentionedMessages(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUnreadMentionedMessages', resultCallback, { type, targetId, channelId }); + } + /** + * 获取会话中未读的 @ 消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUnreadMentionedMessagesLoaded] + */ + getUnreadMentionedMessages(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUnreadMentionedMessages', resultCallback, { type, targetId, channelId }); + } + /** + * 插入一条消息 + * @param message 插入的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageInserted] + */ + insertMessage(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageInserted') { + let { code, message } = res; + callback.onMessageInserted?.({ code, message }); + } + }; + } + return this._invokeMethod('insertMessage', resultCallback, { message }); + } + /** + * 插入多条消息,不支持超级群 + * @param messages 插入的消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesInserted] + */ + insertMessages(messages, callback) { + if (!validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessagesInserted') { + let { code, messages } = res; + callback.onMessagesInserted?.({ code, messages }); + } + }; + } + return this._invokeMethod('insertMessages', resultCallback, { messages }); + } + /** + * 清除消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 清除消息截止时间戳,0 <= recordTime <= 当前会话最后一条消息的 sentTime, 0 清除所有消息,其他值清除小于等于 recordTime 的消息 + * @param policy 清除的策略 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesCleared] + */ + clearMessages(type, targetId, channelId, timestamp, policy, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true) || + !validate('policy', policy, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessagesCleared') { + let { code } = res; + callback.onMessagesCleared?.({ code }); + } + }; + } + return this._invokeMethod('clearMessages', resultCallback, { type, targetId, channelId, timestamp, policy }); + } + /** + * 删除本地消息 + * @param messages 消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onLocalMessagesDeleted] + */ + deleteLocalMessages(messages, callback) { + if (!validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onLocalMessagesDeleted') { + let { code, messages } = res; + callback.onLocalMessagesDeleted?.({ code, messages }); + } + }; + } + return this._invokeMethod('deleteLocalMessages', resultCallback, { messages }); + } + /** + * 删除消息 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesDeleted] + */ + deleteMessages(type, targetId, channelId, messages, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessagesDeleted') { + let { code, messages } = res; + callback.onMessagesDeleted?.({ code, messages }); + } + }; + } + return this._invokeMethod('deleteMessages', resultCallback, { type, targetId, channelId, messages }); + } + /** + * 撤回消息 + * @param message 需要被撤回的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageRecalled] + */ + recallMessage(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageRecalled') { + let { code, message } = res; + callback.onMessageRecalled?.({ code, message }); + } + }; + } + return this._invokeMethod('recallMessage', resultCallback, { message }); + } + /** + * 发送某个会话中的消息阅读回执 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param timestamp 该会话中已读的最后一条消息的发送时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPrivateReadReceiptMessageSent] + */ + sendPrivateReadReceiptMessage(targetId, channelId, timestamp, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onPrivateReadReceiptMessageSent') { + let { code } = res; + callback.onPrivateReadReceiptMessageSent?.({ code }); + } + }; + } + return this._invokeMethod('sendPrivateReadReceiptMessage', resultCallback, { targetId, channelId, timestamp }); + } + /** + * 发起群聊消息已读回执请求 + * @param message 需要请求已读回执的消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupReadReceiptRequestSent] + */ + sendGroupReadReceiptRequest(message, callback) { + if (!validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onGroupReadReceiptRequestSent') { + let { code, message } = res; + callback.onGroupReadReceiptRequestSent?.({ code, message }); + } + }; + } + return this._invokeMethod('sendGroupReadReceiptRequest', resultCallback, { message }); + } + /** + * 发送群聊已读回执 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messages 会话中需要发送已读回执的消息列表 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupReadReceiptResponseSent] + */ + sendGroupReadReceiptResponse(targetId, channelId, messages, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onGroupReadReceiptResponseSent') { + let { code, message } = res; + callback.onGroupReadReceiptResponseSent?.({ code, message }); + } + }; + } + return this._invokeMethod('sendGroupReadReceiptResponse', resultCallback, { targetId, channelId, messages }); + } + /** + * 更新消息扩展信息 + * 每条消息携带扩展信息键值对最大值 300个,单次设置扩展信息键值对最大值 20个 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param expansion 要更新的消息扩展信息键值对,类型是 HashMap;Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,不支持汉字。Value 可以输入空格 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageExpansionUpdated] + */ + updateMessageExpansion(messageUId, expansion, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageExpansionUpdated') { + let { code } = res; + callback.onMessageExpansionUpdated?.({ code }); + } + }; + } + return this._invokeMethod('updateMessageExpansion', resultCallback, { messageUId, expansion }); + } + /** + * 删除消息扩展信息中特定的键值对 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param keys 消息扩展信息中待删除的 key 的列表,类型是 ArrayList + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageExpansionForKeysRemoved] + */ + removeMessageExpansionForKeys(messageUId, keys, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true) || + !validate('keys', keys, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageExpansionForKeysRemoved') { + let { code } = res; + callback.onMessageExpansionForKeysRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeMessageExpansionForKeys', resultCallback, { messageUId, keys }); + } + /** + * 设置消息发送状态。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param sentStatus 要修改的状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageSentStatusChanged] + */ + changeMessageSentStatus(messageId, sentStatus, callback) { + if (!validate('messageId', messageId, AssertRules.NUMBER, true) || + !validate('sentStatus', sentStatus, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageSentStatusChanged') { + let { code } = res; + callback.onMessageSentStatusChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeMessageSentStatus', resultCallback, { messageId, sentStatus }); + } + /** + * 设置消息接收状态。 + * @param messageId 消息的 messageId,可在消息对象中获取 + * @param receivedStatus 要修改的状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageReceiveStatusChanged] + */ + changeMessageReceiveStatus(messageId, receivedStatus, callback) { + if (!validate('messageId', messageId, AssertRules.NUMBER, true) || + !validate('receivedStatus', receivedStatus, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageReceiveStatusChanged') { + let { code } = res; + callback.onMessageReceiveStatusChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeMessageReceiveStatus', resultCallback, { messageId, receivedStatus }); + } + /** + * 加入聊天室。 + * @param targetId 聊天室会话 ID + * @param messageCount 进入聊天室拉取消息数目,-1 时不拉取任何消息,0 时拉取 10 条消息,最多只能拉取 50 + * @param autoCreate 是否创建聊天室,TRUE 如果聊天室不存在,sdk 会创建聊天室并加入,如果已存在,则直接加入 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomJoined] + */ + joinChatRoom(targetId, messageCount, autoCreate, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('messageCount', messageCount, AssertRules.NUMBER, true) || + !validate('autoCreate', autoCreate, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomJoined') { + let { code, targetId } = res; + callback.onChatRoomJoined?.({ code, targetId }); + } + }; + } + return this._invokeMethod('joinChatRoom', resultCallback, { targetId, messageCount, autoCreate }); + } + /** + * 退出聊天室。 + * @param targetId 聊天室会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomLeft] + */ + leaveChatRoom(targetId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomLeft') { + let { code, targetId } = res; + callback.onChatRoomLeft?.({ code, targetId }); + } + }; + } + return this._invokeMethod('leaveChatRoom', resultCallback, { targetId }); + } + /** + * 加载聊天室历史消息记录。 + * 注:必须先开通聊天室消息云存储功能。 + * @param targetId 聊天室会话 ID + * @param timestamp 起始的消息发送时间戳 + * @param order 拉取顺序 0:倒序,1:正序 + * @param count 要获取的消息数量,0 < count <= 50。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomMessagesLoaded] + * @deprecated 用 {@link #getChatRoomMessages(String, long, RCIMIWTimeOrder, int, IRCIMIWGetChatRoomMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomMessages(targetId, timestamp, order, count) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true) || + !validate('order', order, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadChatRoomMessages', resultCallback, { targetId, timestamp, order, count }); + } + /** + * 获取聊天室历史消息记录。 + * 注:必须先开通聊天室消息云存储功能。 + * @param targetId 聊天室会话 ID + * @param timestamp 起始的消息发送时间戳 + * @param order 拉取顺序 0:倒序,1:正序 + * @param count 要获取的消息数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomMessagesLoaded] + */ + getChatRoomMessages(targetId, timestamp, order, count, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true) || + !validate('order', order, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getChatRoomMessages', resultCallback, { targetId, timestamp, order, count }); + } + /** + * 设置聊天室自定义属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性名称,Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 128 个字符 + * @param value 聊天室属性对应的值,最大长度 4096 个字符 + * @param deleteWhenLeft 用户掉线或退出时,是否自动删除该 Key、Value 值 + * @param overwrite 如果当前 key 存在,是否进行覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryAdded] + */ + addChatRoomEntry(targetId, key, value, deleteWhenLeft, overwrite, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('key', key, AssertRules.STRING, true) || + !validate('value', value, AssertRules.STRING, true) || + !validate('deleteWhenLeft', deleteWhenLeft, AssertRules.BOOLEAN, true) || + !validate('overwrite', overwrite, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomEntryAdded') { + let { code } = res; + callback.onChatRoomEntryAdded?.({ code }); + } + }; + } + return this._invokeMethod('addChatRoomEntry', resultCallback, { + targetId, + key, + value, + deleteWhenLeft, + overwrite, + }); + } + /** + * 批量设置聊天室自定义属性 + * @param targetId 聊天室会话 ID + * @param entries 聊天室属性 + * @param deleteWhenLeft 用户掉线或退出时,是否自动删除该 Key、Value 值 + * @param overwrite 是否强制覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntriesAdded] + */ + addChatRoomEntries(targetId, entries, deleteWhenLeft, overwrite, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('deleteWhenLeft', deleteWhenLeft, AssertRules.BOOLEAN, true) || + !validate('overwrite', overwrite, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomEntriesAdded') { + let { code, errors } = res; + callback.onChatRoomEntriesAdded?.({ code, errors }); + } + }; + } + return this._invokeMethod('addChatRoomEntries', resultCallback, { + targetId, + entries, + deleteWhenLeft, + overwrite, + }); + } + /** + * 加载聊天室单个属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryLoaded] + * @deprecated 用 {@link #getChatRoomEntry(String, String, IRCIMIWGetChatRoomEntryCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomEntry(targetId, key) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('key', key, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadChatRoomEntry', resultCallback, { targetId, key }); + } + /** + * 获取聊天室单个属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryLoaded] + */ + getChatRoomEntry(targetId, key, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('key', key, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getChatRoomEntry', resultCallback, { targetId, key }); + } + /** + * 加载聊天室所有属性。 + * @param targetId 聊天室会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomAllEntriesLoaded] + * @deprecated 用 {@link #getChatRoomAllEntries(String, IRCIMIWGetChatRoomAllEntriesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadChatRoomAllEntries(targetId) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadChatRoomAllEntries', resultCallback, { targetId }); + } + /** + * 获取聊天室所有属性。 + * @param targetId 聊天室会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomAllEntriesLoaded] + */ + getChatRoomAllEntries(targetId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getChatRoomAllEntries', resultCallback, { targetId }); + } + /** + * 删除聊天室自定义属性。 + * @param targetId 聊天室会话 ID + * @param key 聊天室属性键值 + * @param force 是否强制删除 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntryRemoved] + */ + removeChatRoomEntry(targetId, key, force, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('key', key, AssertRules.STRING, true) || + !validate('force', force, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomEntryRemoved') { + let { code } = res; + callback.onChatRoomEntryRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeChatRoomEntry', resultCallback, { targetId, key, force }); + } + /** + * 批量删除聊天室自定义属性 + * @param targetId 聊天室会话 ID + * @param keys 聊天室属性 + * @param force 是否强制覆盖 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onChatRoomEntriesRemoved] + */ + removeChatRoomEntries(targetId, keys, force, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('keys', keys, AssertRules.ARRAY, true) || + !validate('force', force, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onChatRoomEntriesRemoved') { + let { code } = res; + callback.onChatRoomEntriesRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeChatRoomEntries', resultCallback, { targetId, keys, force }); + } + /** + * 将某个用户加入黑名单。 + * 当你把对方加入黑名单后,对方再发消息时,就会提示“已被加入黑名单,消息发送失败”。 但你依然可以发消息个对方。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistAdded] + */ + addToBlacklist(userId, callback) { + if (!validate('userId', userId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onBlacklistAdded') { + let { code, userId } = res; + callback.onBlacklistAdded?.({ code, userId }); + } + }; + } + return this._invokeMethod('addToBlacklist', resultCallback, { userId }); + } + /** + * 将某个用户从黑名单中移出。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistRemoved] + */ + removeFromBlacklist(userId, callback) { + if (!validate('userId', userId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onBlacklistRemoved') { + let { code, userId } = res; + callback.onBlacklistRemoved?.({ code, userId }); + } + }; + } + return this._invokeMethod('removeFromBlacklist', resultCallback, { userId }); + } + /** + * 获取某用户是否在黑名单中。 + * @param userId 用户 Id + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistStatusLoaded] + * @deprecated 用 {@link #getBlacklistStatus(String, IRCIMIWGetBlacklistStatusCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlacklistStatus(userId) { + if (!validate('userId', userId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadBlacklistStatus', resultCallback, { userId }); + } + /** + * 获取某用户是否在黑名单中。 + * @param userId 用户 Id + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistStatusLoaded] + */ + getBlacklistStatus(userId, callback) { + if (!validate('userId', userId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getBlacklistStatus', resultCallback, { userId }); + } + /** + * 加载当前用户设置的黑名单列表。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistLoaded] + * @deprecated 用 {@link #getBlacklist(IRCIMIWGetBlacklistCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBlacklist() { + let resultCallback; + return this._invokeMethod('loadBlacklist', resultCallback, {}); + } + /** + * 获取当前用户设置的黑名单列表。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBlacklistLoaded] + */ + getBlacklist(callback) { + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getBlacklist', resultCallback, {}); + } + /** + * 根据关键字搜索指定会话中的消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 查询 beginTime 之前的消息, 传 0 时从最新消息开始搜索,从该时间往前搜索。 + * @param count 查询的数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearched] + */ + searchMessages(type, targetId, channelId, keyword, startTime, count, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('keyword', keyword, AssertRules.STRING, true) || + !validate('startTime', startTime, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('searchMessages', resultCallback, { + type, + targetId, + channelId, + keyword, + startTime, + count, + }); + } + /** + * 根据关键字搜索指定会话中某个时间段的消息。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param keyword 搜索的关键字 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param offset 偏移量 + * @param count 返回的搜索结果数量,0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearchedByTimeRange] + */ + searchMessagesByTimeRange(type, targetId, channelId, keyword, startTime, endTime, offset, count, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('keyword', keyword, AssertRules.STRING, true) || + !validate('startTime', startTime, AssertRules.NUMBER, true) || + !validate('endTime', endTime, AssertRules.NUMBER, true) || + !validate('offset', offset, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('searchMessagesByTimeRange', resultCallback, { + type, + targetId, + channelId, + keyword, + startTime, + endTime, + offset, + count, + }); + } + /** + * 根据用户 id 搜索指定会话中的消息。 + * @param userId 用户 id + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param startTime 查询记录的起始时间, 传 0 时从最新消息开始搜索,从该时间往前搜索。 + * @param count 返回的搜索结果数量 0 < count <= 50。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessagesSearchedByUserId] + */ + searchMessagesByUserId(userId, type, targetId, channelId, startTime, count, callback) { + if (!validate('userId', userId, AssertRules.STRING, true) || + !validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('startTime', startTime, AssertRules.NUMBER, true) || + !validate('count', count, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('searchMessagesByUserId', resultCallback, { + userId, + type, + targetId, + channelId, + startTime, + count, + }); + } + /** + * 根据关键字搜索会话。 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param messageTypes 搜索的消息类型 + * @param keyword 搜索的关键字。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsSearched] + */ + searchConversations(conversationTypes, channelId, messageTypes, keyword, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('messageTypes', messageTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('keyword', keyword, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('searchConversations', resultCallback, { + conversationTypes, + channelId, + messageTypes, + keyword, + }); + } + /** + * 屏蔽某个时间段的消息提醒 + * @param startTime 开始消息免打扰时间,格式为 HH:MM:SS + * @param spanMinutes 需要消息免打扰分钟数,0 < spanMinutes < 1440( 比如,您设置的起始时间是 00:00, 结束时间为 01:00,则 spanMinutes 为 60 分钟。设置为 1439 代表全天免打扰 (23 60 + 59 = 1439 )) + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursChanged] + */ + changeNotificationQuietHours(startTime, spanMinutes, level, callback) { + if (!validate('startTime', startTime, AssertRules.STRING, true) || + !validate('spanMinutes', spanMinutes, AssertRules.NUMBER, true) || + !validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onNotificationQuietHoursChanged') { + let { code } = res; + callback.onNotificationQuietHoursChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeNotificationQuietHours', resultCallback, { startTime, spanMinutes, level }); + } + /** + * 删除已设置的全局时间段消息提醒屏蔽 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursRemoved] + */ + removeNotificationQuietHours(callback) { + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onNotificationQuietHoursRemoved') { + let { code } = res; + callback.onNotificationQuietHoursRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeNotificationQuietHours', resultCallback, {}); + } + /** + * 加载已设置的时间段消息提醒屏蔽 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursLoaded] + * @deprecated 用 {@link #getNotificationQuietHours(IRCIMIWGetNotificationQuietHoursCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadNotificationQuietHours() { + let resultCallback; + return this._invokeMethod('loadNotificationQuietHours', resultCallback, {}); + } + /** + * 获取已设置的时间段消息提醒屏蔽 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onNotificationQuietHoursLoaded] + */ + getNotificationQuietHours(callback) { + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { startTime, spanMinutes, level } = res; + callback.onSuccess?.({ startTime, spanMinutes, level }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getNotificationQuietHours', resultCallback, {}); + } + /** + * 设置会话的消息提醒状态 + * 注:超级群调用该接口,channelId 为空时,相当于设置了 channelId 为空的频道的免打扰,不会屏蔽整个超级群会话下所有频道的免打扰 + * @param type 会话类型。请注意以下限制:
  • *超级群会话类型*:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话*所有消息*设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(`targetId`)中*不属于任何频道的消息*的免打扰状态级别。如需修改请提交工单。
  • *聊天室会话类型*:不支持,因为聊天室消息默认不支持消息推送提醒。
+ * @param targetId 会话 ID + * @param channelId 超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • *注意*:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(`targetId`)中*不属于任何频道的消息*设置免打扰状态级别。如需修改请提交工单。

+ * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelChanged] + */ + changeConversationNotificationLevel(type, targetId, channelId, level, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationNotificationLevelChanged') { + let { code } = res; + callback.onConversationNotificationLevelChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeConversationNotificationLevel', resultCallback, { + type, + targetId, + channelId, + level, + }); + } + /** + * 加载会话的消息提醒状态 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelLoaded] + * @deprecated 用 {@link #getConversationNotificationLevel(RCIMIWConversationType, String, String, IRCIMIWGetConversationNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationNotificationLevel(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversationNotificationLevel', resultCallback, { type, targetId, channelId }); + } + /** + * 获取会话的消息提醒状态 + * @param type 会话类型。请注意以下限制:
  • *超级群会话类型*:如在 2022.09.01 之前开通超级群业务,默认不支持为单个超级群会话*所有消息*设置免打扰级别(“所有消息”指所有频道中的消息和不属于任何频道的消息)。该接口仅设置指定超级群会话(`targetId`)中*不属于任何频道的消息*的免打扰状态级别。如需修改请提交工单。
  • *聊天室会话类型*:不支持,因为聊天室消息默认不支持消息推送提醒。
+ * @param targetId 会话 ID + * @param channelId 超级群的会话频道 ID。其他类型传 null 即可。
  • 如果传入频道 ID,则针对该指定频道设置消息免打扰级别。如果不指定频道 ID,则对所有超级群消息生效。
  • *注意*:2022.09.01 之前开通超级群业务的客户,如果不指定频道 ID,则默认传 "" 空字符串,即仅针对指定超级群会话(`targetId`)中*不属于任何频道的消息*设置免打扰状态级别。如需修改请提交工单。

+ * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationNotificationLevelLoaded] + */ + getConversationNotificationLevel(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversationNotificationLevel', resultCallback, { type, targetId, channelId }); + } + /** + * 设置会话类型的消息提醒状态 + * 注:如要移除消息提醒状态,设置level为RCIMIWPushNotificationLevelDefault + * @param type 会话类型 + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationTypeNotificationLevelChanged] + */ + changeConversationTypeNotificationLevel(type, level, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || !validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onConversationTypeNotificationLevelChanged') { + let { code } = res; + callback.onConversationTypeNotificationLevelChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeConversationTypeNotificationLevel', resultCallback, { type, level }); + } + /** + * 获取会话类型的消息提醒状态 + * @param type 会话类型 + * @return [onConversationTypeNotificationLevelLoaded] + * @deprecated 用 {@link #getConversationTypeNotificationLevel(RCIMIWConversationType, IRCIMIWGetConversationTypeNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationTypeNotificationLevel(type) { + if (!validate('type', type, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversationTypeNotificationLevel', resultCallback, { type }); + } + /** + * 获取会话类型的消息提醒状态 + * @param type 会话类型 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return [onConversationTypeNotificationLevelLoaded] + */ + getConversationTypeNotificationLevel(type, callback) { + if (!validate('type', type, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversationTypeNotificationLevel', resultCallback, { type }); + } + /** + * 设置超级群的默认消息状态 + * 一般由管理员设置的接口,针对超级群的所有群成员生效,针对超级群下所有频道生效,优先级较低。如果群成员自己超级群的免打扰级别,那么以群成员自己设置的为准。 + * @param targetId 会话 ID + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelChanged] + */ + changeUltraGroupDefaultNotificationLevel(targetId, level, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupDefaultNotificationLevelChanged') { + let { code } = res; + callback.onUltraGroupDefaultNotificationLevelChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeUltraGroupDefaultNotificationLevel', resultCallback, { targetId, level }); + } + /** + * 获取超级群的默认消息状态 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelLoaded] + * @deprecated 用 {@link #getUltraGroupDefaultNotificationLevel(String, IRCIMIWGetUltraGroupDefaultNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupDefaultNotificationLevel(targetId) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUltraGroupDefaultNotificationLevel', resultCallback, { targetId }); + } + /** + * 获取超级群的默认消息状态 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupDefaultNotificationLevelLoaded] + */ + getUltraGroupDefaultNotificationLevel(targetId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupDefaultNotificationLevel', resultCallback, { targetId }); + } + /** + * 设置超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param level 消息通知级别 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelChanged] + */ + changeUltraGroupChannelDefaultNotificationLevel(targetId, channelId, level, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupChannelDefaultNotificationLevelChanged') { + let { code } = res; + callback.onUltraGroupChannelDefaultNotificationLevelChanged?.({ code }); + } + }; + } + return this._invokeMethod('changeUltraGroupChannelDefaultNotificationLevel', resultCallback, { + targetId, + channelId, + level, + }); + } + /** + * 获取超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelLoaded] + * @deprecated 用 {@link #getUltraGroupChannelDefaultNotificationLevel(String, String, IRCIMIWGetUltraGroupChannelDefaultNotificationLevelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadUltraGroupChannelDefaultNotificationLevel(targetId, channelId) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadUltraGroupChannelDefaultNotificationLevel', resultCallback, { + targetId, + channelId, + }); + } + /** + * 获取超级群频道的默认消息状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupChannelDefaultNotificationLevelLoaded] + */ + getUltraGroupChannelDefaultNotificationLevel(targetId, channelId, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getUltraGroupChannelDefaultNotificationLevel', resultCallback, { + targetId, + channelId, + }); + } + /** + * 设置是否显示远程推送内容详情,此功能需要从服务端开启用户设置功能。 + * @param showContent 是否显示远程推送内容 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushContentShowStatusChanged] + */ + changePushContentShowStatus(showContent, callback) { + if (!validate('showContent', showContent, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onPushContentShowStatusChanged') { + let { code } = res; + callback.onPushContentShowStatusChanged?.({ code }); + } + }; + } + return this._invokeMethod('changePushContentShowStatus', resultCallback, { showContent }); + } + /** + * 设置推送语言 + * @param language 推送语言, 目前仅支持 en_us、zh_cn、ar_sa + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushLanguageChanged] + */ + changePushLanguage(language, callback) { + if (!validate('language', language, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onPushLanguageChanged') { + let { code } = res; + callback.onPushLanguageChanged?.({ code }); + } + }; + } + return this._invokeMethod('changePushLanguage', resultCallback, { language }); + } + /** + * 设置是否接收远程推送。 + * 前提:移动端未在线,Web 、MAC/PC 终端在线,移动端是否接收远程推送。 + * 此功能需要从服务端开启用户设置功能。 + * @param receive 是否接收 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onPushReceiveStatusChanged] + */ + changePushReceiveStatus(receive, callback) { + if (!validate('receive', receive, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onPushReceiveStatusChanged') { + let { code } = res; + callback.onPushReceiveStatusChanged?.({ code }); + } + }; + } + return this._invokeMethod('changePushReceiveStatus', resultCallback, { receive }); + } + /** + * 给指定的群成员发送消息 + * @param message 要发送的消息 + * @param userIds 群成员集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onGroupMessageToDesignatedUsersAttached], [onGroupMessageToDesignatedUsersSent] + */ + sendGroupMessageToDesignatedUsers(message, userIds, callback) { + if (!validate('message', message, AssertRules.OBJECT, true) || + !validate('userIds', userIds, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onMessageSaved') { + let { message } = res; + callback.onMessageSaved?.({ message }); + } + if (res.callbackName === 'onMessageSent') { + let { code, message } = res; + callback.onMessageSent?.({ code, message }); + } + }; + } + return this._invokeMethod('sendGroupMessageToDesignatedUsers', resultCallback, { message, userIds }); + } + /** + * 加载指定会话的消息总数。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageCountLoaded] + * @deprecated 用 {@link #getMessageCount(RCIMIWConversationType, String, String, IRCIMIWGetMessageCountCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadMessageCount(type, targetId, channelId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadMessageCount', resultCallback, { type, targetId, channelId }); + } + /** + * 获取指定会话的消息总数。 + * @param type 会话类型 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onMessageCountLoaded] + */ + getMessageCount(type, targetId, channelId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getMessageCount', resultCallback, { type, targetId, channelId }); + } + /** + * 根据会话类型,加载置顶会话列表 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTopConversationsLoaded] + * @deprecated 用 {@link #getTopConversations(List, String, IRCIMIWGetTopConversationsCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadTopConversations(conversationTypes, channelId) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadTopConversations', resultCallback, { conversationTypes, channelId }); + } + /** + * 根据会话类型,获取置顶会话列表 + * @param conversationTypes 会话类型集合 + * @param channelId 频道 ID,仅支持超级群使用,其他会话类型传 null 即可。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onTopConversationsLoaded] + */ + getTopConversations(conversationTypes, channelId, callback) { + if (!validate('conversationTypes', conversationTypes, AssertRules.NUMBER_ARRAY, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getTopConversations', resultCallback, { conversationTypes, channelId }); + } + /** + * 上报超级群的已读时间 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param timestamp 已读时间 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupReadStatusSynced] + */ + syncUltraGroupReadStatus(targetId, channelId, timestamp, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupReadStatusSynced') { + let { code } = res; + callback.onUltraGroupReadStatusSynced?.({ code }); + } + }; + } + return this._invokeMethod('syncUltraGroupReadStatus', resultCallback, { targetId, channelId, timestamp }); + } + /** + * 获取特定会话下所有频道的会话列表,只支持超级群 + * @param type 会话类型 + * @param targetId 会话 ID + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoadedForAllChannel] + * @deprecated 用 {@link #getConversationsForAllChannel(RCIMIWConversationType, String, IRCIMIWGetConversationsForAllChannelCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadConversationsForAllChannel(type, targetId) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadConversationsForAllChannel', resultCallback, { type, targetId }); + } + /** + * 获取特定会话下所有频道的会话列表,只支持超级群 + * @param type 会话类型 + * @param targetId 会话 ID + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onConversationsLoadedForAllChannel] + */ + getConversationsForAllChannel(type, targetId, callback) { + if (!validate('type', type, AssertRules.NUMBER, true) || + !validate('targetId', targetId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { t } = res; + callback.onSuccess?.({ t }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getConversationsForAllChannel', resultCallback, { type, targetId }); + } + /** + * 修改超级群消息 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param message 要修改的 message + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageModified] + */ + modifyUltraGroupMessage(messageUId, message, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true) || + !validate('message', message, AssertRules.OBJECT, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessageModified') { + let { code } = res; + callback.onUltraGroupMessageModified?.({ code }); + } + }; + } + return this._invokeMethod('modifyUltraGroupMessage', resultCallback, { messageUId, message }); + } + /** + * 撤回超级群消息 + * @param message 需要撤回的消息 + * @param deleteRemote 是否删除远端消息 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageRecalled] + */ + recallUltraGroupMessage(message, deleteRemote, callback) { + if (!validate('message', message, AssertRules.OBJECT, true) || + !validate('deleteRemote', deleteRemote, AssertRules.BOOLEAN, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessageRecalled') { + let { code } = res; + callback.onUltraGroupMessageRecalled?.({ code }); + } + }; + } + return this._invokeMethod('recallUltraGroupMessage', resultCallback, { message, deleteRemote }); + } + /** + * 删除超级群指定时间之前的消息 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param timestamp 时间戳 + * @param policy 清除策略 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessagesCleared] + */ + clearUltraGroupMessages(targetId, channelId, timestamp, policy, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true) || + !validate('policy', policy, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessagesCleared') { + let { code } = res; + callback.onUltraGroupMessagesCleared?.({ code }); + } + }; + } + return this._invokeMethod('clearUltraGroupMessages', resultCallback, { + targetId, + channelId, + timestamp, + policy, + }); + } + /** + * 发送超级群输入状态 + * @param targetId 会话 ID + * @param channelId 频道 ID,仅支持超级群使用。 + * @param typingStatus 输入状态 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupTypingStatusSent] + */ + sendUltraGroupTypingStatus(targetId, channelId, typingStatus, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('channelId', channelId, AssertRules.ONLY_STRING, false) || + !validate('typingStatus', typingStatus, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupTypingStatusSent') { + let { code } = res; + callback.onUltraGroupTypingStatusSent?.({ code }); + } + }; + } + return this._invokeMethod('sendUltraGroupTypingStatus', resultCallback, { targetId, channelId, typingStatus }); + } + /** + * 删除超级群所有频道指定时间之前的消息 + * @param targetId 会话 ID + * @param timestamp 时间戳 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessagesClearedForAllChannel] + */ + clearUltraGroupMessagesForAllChannel(targetId, timestamp, callback) { + if (!validate('targetId', targetId, AssertRules.STRING, true) || + !validate('timestamp', timestamp, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessagesClearedForAllChannel') { + let { code } = res; + callback.onUltraGroupMessagesClearedForAllChannel?.({ code }); + } + }; + } + return this._invokeMethod('clearUltraGroupMessagesForAllChannel', resultCallback, { targetId, timestamp }); + } + /** + * 从服务获取批量消息 + * @param messages 获取的消息集合 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBatchRemoteUltraGroupMessagesLoaded] + * @deprecated 用 {@link #getBatchRemoteUltraGroupMessages(List, IRCIMIWGetBatchRemoteUltraGroupMessagesCallback)} 代替, 预计将在 6.x 版本删除此接口。 + */ + loadBatchRemoteUltraGroupMessages(messages) { + if (!validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('loadBatchRemoteUltraGroupMessages', resultCallback, { messages }); + } + /** + * 从服务获取批量消息 + * @param messages 获取的消息集合 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onBatchRemoteUltraGroupMessagesLoaded] + */ + getBatchRemoteUltraGroupMessages(messages, callback) { + if (!validate('messages', messages, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onSuccess') { + let { matchedMessages, notMatchedMessages } = res; + callback.onSuccess?.({ matchedMessages, notMatchedMessages }); + } + if (res.callbackName === 'onError') { + let { code } = res; + callback.onError?.({ code }); + } + }; + } + return this._invokeMethod('getBatchRemoteUltraGroupMessages', resultCallback, { messages }); + } + /** + * 更新超级群消息扩展信息 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param expansion 更新的消息扩展信息键值对,类型是 HashMap;Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,不支持汉字。Value 可以输入空格。 + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageExpansionUpdated] + */ + updateUltraGroupMessageExpansion(messageUId, expansion, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessageExpansionUpdated') { + let { code } = res; + callback.onUltraGroupMessageExpansionUpdated?.({ code }); + } + }; + } + return this._invokeMethod('updateUltraGroupMessageExpansion', resultCallback, { messageUId, expansion }); + } + /** + * 删除超级群消息扩展信息中特定的键值对 + * @param messageUId 消息的 messageUid,可在消息对象中获取,且只有发送成功的消息才会有值 + * @param keys 消息扩展信息中待删除的 key 的列表,类型是 ArrayList + * @param callback 事件回调。SDK 从 5.3.1 版本开始支持 callback 方式回调。从 5.4.0 版本废弃该接口的其他回调方式,预计将在 6.x 版本删除此其他回调方式。如果传入了 callback 参数,仅触发 callback 回调。 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + * @listener [onUltraGroupMessageExpansionForKeysRemoved] + */ + removeUltraGroupMessageExpansionForKeys(messageUId, keys, callback) { + if (!validate('messageUId', messageUId, AssertRules.STRING, true) || + !validate('keys', keys, AssertRules.ARRAY, true)) { + return paramErrorPromise; + } + let resultCallback; + if (callback) { + resultCallback = (res) => { + if (res.callbackName === 'onUltraGroupMessageExpansionForKeysRemoved') { + let { code } = res; + callback.onUltraGroupMessageExpansionForKeysRemoved?.({ code }); + } + }; + } + return this._invokeMethod('removeUltraGroupMessageExpansionForKeys', resultCallback, { messageUId, keys }); + } + /** + * 修改日志等级 + * @param level 日志级别 + * @return 当次接口操作的状态码。0 代表调用成功 具体结果需要实现接口回调,非 0 代表当前接口调用操作失败,不会触发接口回调,详细错误参考错误码 + */ + changeLogLevel(level) { + if (!validate('level', level, AssertRules.NUMBER, true)) { + return paramErrorPromise; + } + let resultCallback; + return this._invokeMethod('changeLogLevel', resultCallback, { level }); + } + /** + * 获取本地时间与服务器时间的时间差。消息发送成功后,SDK 与服务器同步时间,消息所在数据库中存储的时间就是服务器时间。 System.currentTimeMillis() - getDeltaTime() 可以获取服务器当前时间。 + * @return 本地时间与服务器时间的差值 + */ + getDeltaTime() { + let resultCallback; + return this._invokeMethod('getDeltaTime', resultCallback, {}); + } + /** + * 收到消息的监听 + */ + setOnMessageReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageReceived'; + this._setListener(eventName, callback); + } + /** + * 网络状态变化 + */ + setOnConnectionStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onConnectionStatusChanged'; + this._setListener(eventName, callback); + } + /** + * 会话状态置顶多端同步监听 + */ + setOnConversationTopStatusSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationTopStatusSynced'; + this._setListener(eventName, callback); + } + /** + * 会话状态免打扰多端同步监听 + */ + setOnConversationNotificationLevelSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationNotificationLevelSynced'; + this._setListener(eventName, callback); + } + /** + * 撤回消息监听器 + */ + setOnRemoteMessageRecalledListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteMessageRecalled'; + this._setListener(eventName, callback); + } + /** + * 单聊中收到消息回执的回调。 + */ + setOnPrivateReadReceiptReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onPrivateReadReceiptReceived'; + this._setListener(eventName, callback); + } + /** + * 消息扩展信息更改的回调 + */ + setOnRemoteMessageExpansionUpdatedListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteMessageExpansionUpdated'; + this._setListener(eventName, callback); + } + /** + * 消息扩展信息删除的回调 + */ + setOnRemoteMessageExpansionForKeyRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteMessageExpansionForKeyRemoved'; + this._setListener(eventName, callback); + } + /** + * 聊天室用户进入、退出聊天室监听 + */ + setOnChatRoomMemberChangedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomMemberChanged'; + this._setListener(eventName, callback); + } + /** + * 会话输入状态发生变化。对于单聊而言,当对方正在输入时,监听会触发一次;当对方不处于输入状态时,该监听还会触发一次,但回调里输入用户列表为空。 + */ + setOnTypingStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onTypingStatusChanged'; + this._setListener(eventName, callback); + } + /** + * 同步消息未读状态监听接口。多端登录,收到其它端清除某一会话未读数通知的时候 + */ + setOnConversationReadStatusSyncMessageReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationReadStatusSyncMessageReceived'; + this._setListener(eventName, callback); + } + /** + * 聊天室 KV 同步完成的回调 + */ + setOnChatRoomEntriesSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntriesSynced'; + this._setListener(eventName, callback); + } + /** + * 聊天室 KV 发生变化的回调 + */ + setOnChatRoomEntriesChangedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntriesChanged'; + this._setListener(eventName, callback); + } + /** + * 超级群消息 kv 被更新 + */ + setOnRemoteUltraGroupMessageExpansionUpdatedListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteUltraGroupMessageExpansionUpdated'; + this._setListener(eventName, callback); + } + /** + * 超级群消息被更改 + */ + setOnRemoteUltraGroupMessageModifiedListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteUltraGroupMessageModified'; + this._setListener(eventName, callback); + } + /** + * 超级群消息被撤回 + */ + setOnRemoteUltraGroupMessageRecalledListener(callback) { + const eventName = 'IRCIMIWListener:onRemoteUltraGroupMessageRecalled'; + this._setListener(eventName, callback); + } + /** + * 超级群已读的监听 + */ + setOnUltraGroupReadTimeReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupReadTimeReceived'; + this._setListener(eventName, callback); + } + /** + * 用户输入状态变化的回调 + * 当客户端收到用户输入状态的变化时,会回调此接口,通知发生变化的会话以及当前正在输入的RCUltraGroupTypingStatusInfo列表 + */ + setOnUltraGroupTypingStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupTypingStatusChanged'; + this._setListener(eventName, callback); + } + /** + * 发送含有敏感词消息被拦截的回调 + */ + setOnMessageBlockedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageBlocked'; + this._setListener(eventName, callback); + } + /** + * 聊天室状态发生变化的监听 + */ + setOnChatRoomStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomStatusChanged'; + this._setListener(eventName, callback); + } + /** + * 收到群聊已读回执请求的监听 + */ + setOnGroupMessageReadReceiptRequestReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onGroupMessageReadReceiptRequestReceived'; + this._setListener(eventName, callback); + } + /** + * 收到群聊已读回执响应的监听 + */ + setOnGroupMessageReadReceiptResponseReceivedListener(callback) { + const eventName = 'IRCIMIWListener:onGroupMessageReadReceiptResponseReceived'; + this._setListener(eventName, callback); + } + /** + * [connect] 的接口监听,收到链接结果的回调 + */ + setOnConnectedListener(callback) { + const eventName = 'IRCIMIWListener:onConnected'; + this._setListener(eventName, callback); + } + /** + * [connect] 的接口监听,数据库打开时发生的回调 + */ + setOnDatabaseOpenedListener(callback) { + const eventName = 'IRCIMIWListener:onDatabaseOpened'; + this._setListener(eventName, callback); + } + /** + * [loadConversation] 的接口监听 + */ + setOnConversationLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadConversations] 的接口监听 + */ + setOnConversationsLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationsLoaded'; + this._setListener(eventName, callback); + } + /** + * [removeConversation] 的接口监听 + */ + setOnConversationRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationRemoved'; + this._setListener(eventName, callback); + } + /** + * [removeConversations] 的接口监听 + */ + setOnConversationsRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationsRemoved'; + this._setListener(eventName, callback); + } + /** + * [loadTotalUnreadCount] 的接口监听 + */ + setOnTotalUnreadCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onTotalUnreadCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUnreadCount] 的接口监听 + */ + setOnUnreadCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUnreadCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUnreadCountByConversationTypes] 的接口监听 + */ + setOnUnreadCountByConversationTypesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUnreadCountByConversationTypesLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUnreadMentionedCount] 的接口监听 + */ + setOnUnreadMentionedCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUnreadMentionedCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupAllUnreadCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupAllUnreadCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupAllUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupAllUnreadMentionedCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupAllUnreadMentionedCountLoaded'; + this._setListener(eventName, callback); + } + /** + * + * 超级群列表同步完成的回调 + * + */ + setOnUltraGroupConversationsSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupConversationsSynced'; + this._setListener(eventName, callback); + } + /** + * [clearUnreadCount] 的接口监听 + */ + setOnUnreadCountClearedListener(callback) { + const eventName = 'IRCIMIWListener:onUnreadCountCleared'; + this._setListener(eventName, callback); + } + /** + * [saveDraftMessage] 的接口监听 + */ + setOnDraftMessageSavedListener(callback) { + const eventName = 'IRCIMIWListener:onDraftMessageSaved'; + this._setListener(eventName, callback); + } + /** + * [clearDraftMessage] 的接口监听 + */ + setOnDraftMessageClearedListener(callback) { + const eventName = 'IRCIMIWListener:onDraftMessageCleared'; + this._setListener(eventName, callback); + } + /** + * [loadDraftMessage] 的接口监听 + */ + setOnDraftMessageLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onDraftMessageLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadBlockedConversations] 的接口监听 + */ + setOnBlockedConversationsLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onBlockedConversationsLoaded'; + this._setListener(eventName, callback); + } + /** + * [changeConversationTopStatus] 的接口监听 + */ + setOnConversationTopStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationTopStatusChanged'; + this._setListener(eventName, callback); + } + /** + * [loadConversationTopStatus] 的接口监听 + */ + setOnConversationTopStatusLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationTopStatusLoaded'; + this._setListener(eventName, callback); + } + /** + * [syncConversationReadStatus] 的接口监听 + */ + setOnConversationReadStatusSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationReadStatusSynced'; + this._setListener(eventName, callback); + } + /** + * [sendMessage] 的接口监听 + */ + setOnMessageAttachedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageAttached'; + this._setListener(eventName, callback); + } + /** + * [sendMessage] 的接口监听 + */ + setOnMessageSentListener(callback) { + const eventName = 'IRCIMIWListener:onMessageSent'; + this._setListener(eventName, callback); + } + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageAttachedListener(callback) { + const eventName = 'IRCIMIWListener:onMediaMessageAttached'; + this._setListener(eventName, callback); + } + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageSendingListener(callback) { + const eventName = 'IRCIMIWListener:onMediaMessageSending'; + this._setListener(eventName, callback); + } + /** + * [cancelSendingMediaMessage] 的接口监听 + */ + setOnSendingMediaMessageCanceledListener(callback) { + const eventName = 'IRCIMIWListener:onSendingMediaMessageCanceled'; + this._setListener(eventName, callback); + } + /** + * [sendMediaMessage] 的接口监听 + */ + setOnMediaMessageSentListener(callback) { + const eventName = 'IRCIMIWListener:onMediaMessageSent'; + this._setListener(eventName, callback); + } + /** + * [downloadMediaMessage] 的接口监听 + */ + setOnMediaMessageDownloadingListener(callback) { + const eventName = 'IRCIMIWListener:onMediaMessageDownloading'; + this._setListener(eventName, callback); + } + /** + * [downloadMediaMessage] 的接口监听 + */ + setOnMediaMessageDownloadedListener(callback) { + const eventName = 'IRCIMIWListener:onMediaMessageDownloaded'; + this._setListener(eventName, callback); + } + /** + * [cancelDownloadingMediaMessage] 的接口监听 + */ + setOnDownloadingMediaMessageCanceledListener(callback) { + const eventName = 'IRCIMIWListener:onDownloadingMediaMessageCanceled'; + this._setListener(eventName, callback); + } + /** + * [loadMessages] 的接口监听 + */ + setOnMessagesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUnreadMentionedMessages] 的接口监听 + */ + setOnUnreadMentionedMessagesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUnreadMentionedMessagesLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadFirstUnreadMessage] 的接口监听 + */ + setOnFirstUnreadMessageLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onFirstUnreadMessageLoaded'; + this._setListener(eventName, callback); + } + /** + * [insertMessage] 的接口监听 + */ + setOnMessageInsertedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageInserted'; + this._setListener(eventName, callback); + } + /** + * [insertMessages] 的接口监听 + */ + setOnMessagesInsertedListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesInserted'; + this._setListener(eventName, callback); + } + /** + * [clearMessages] 的接口监听 + */ + setOnMessagesClearedListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesCleared'; + this._setListener(eventName, callback); + } + /** + * [deleteLocalMessages] 的接口监听 + */ + setOnLocalMessagesDeletedListener(callback) { + const eventName = 'IRCIMIWListener:onLocalMessagesDeleted'; + this._setListener(eventName, callback); + } + /** + * [deleteMessages] 的接口监听 + */ + setOnMessagesDeletedListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesDeleted'; + this._setListener(eventName, callback); + } + /** + * [recallMessage] 的接口监听 + */ + setOnMessageRecalledListener(callback) { + const eventName = 'IRCIMIWListener:onMessageRecalled'; + this._setListener(eventName, callback); + } + /** + * [sendPrivateReadReceiptMessage] 的接口监听 + */ + setOnPrivateReadReceiptMessageSentListener(callback) { + const eventName = 'IRCIMIWListener:onPrivateReadReceiptMessageSent'; + this._setListener(eventName, callback); + } + /** + * [updateMessageExpansion] 的接口监听 + */ + setOnMessageExpansionUpdatedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageExpansionUpdated'; + this._setListener(eventName, callback); + } + /** + * [removeMessageExpansionForKeys] 的接口监听 + */ + setOnMessageExpansionForKeysRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageExpansionForKeysRemoved'; + this._setListener(eventName, callback); + } + /** + * [changeMessageReceiveStatus] 的接口监听 + */ + setOnMessageReceiveStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageReceiveStatusChanged'; + this._setListener(eventName, callback); + } + /** + * [changeMessageSentStatus] 的接口监听 + */ + setOnMessageSentStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageSentStatusChanged'; + this._setListener(eventName, callback); + } + /** + * [joinChatRoom] 的接口监听 + */ + setOnChatRoomJoinedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomJoined'; + this._setListener(eventName, callback); + } + /** + * 正在加入聊天室的回调 + */ + setOnChatRoomJoiningListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomJoining'; + this._setListener(eventName, callback); + } + /** + * [leaveChatRoom] 的接口监听 + */ + setOnChatRoomLeftListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomLeft'; + this._setListener(eventName, callback); + } + /** + * [loadChatRoomMessages] 的接口监听 + */ + setOnChatRoomMessagesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomMessagesLoaded'; + this._setListener(eventName, callback); + } + /** + * [addChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryAddedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntryAdded'; + this._setListener(eventName, callback); + } + /** + * [addChatRoomEntries] 的接口监听 + */ + setOnChatRoomEntriesAddedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntriesAdded'; + this._setListener(eventName, callback); + } + /** + * [loadChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntryLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadChatRoomAllEntries] 的接口监听 + */ + setOnChatRoomAllEntriesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomAllEntriesLoaded'; + this._setListener(eventName, callback); + } + /** + * [removeChatRoomEntry] 的接口监听 + */ + setOnChatRoomEntryRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntryRemoved'; + this._setListener(eventName, callback); + } + /** + * [removeChatRoomEntries] 的接口监听 + */ + setOnChatRoomEntriesRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onChatRoomEntriesRemoved'; + this._setListener(eventName, callback); + } + /** + * [addToBlacklist] 的接口监听 + */ + setOnBlacklistAddedListener(callback) { + const eventName = 'IRCIMIWListener:onBlacklistAdded'; + this._setListener(eventName, callback); + } + /** + * [removeFromBlacklist] 的接口监听 + */ + setOnBlacklistRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onBlacklistRemoved'; + this._setListener(eventName, callback); + } + /** + * [loadBlacklistStatus] 的接口监听 + */ + setOnBlacklistStatusLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onBlacklistStatusLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadBlacklist] 的接口监听 + */ + setOnBlacklistLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onBlacklistLoaded'; + this._setListener(eventName, callback); + } + /** + * [searchMessages] 的接口监听 + */ + setOnMessagesSearchedListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesSearched'; + this._setListener(eventName, callback); + } + /** + * [searchMessagesByTimeRange] 的接口监听 + */ + setOnMessagesSearchedByTimeRangeListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesSearchedByTimeRange'; + this._setListener(eventName, callback); + } + /** + * [searchMessagesByUserId] 的接口监听 + */ + setOnMessagesSearchedByUserIdListener(callback) { + const eventName = 'IRCIMIWListener:onMessagesSearchedByUserId'; + this._setListener(eventName, callback); + } + /** + * [searchConversations] 的接口监听 + */ + setOnConversationsSearchedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationsSearched'; + this._setListener(eventName, callback); + } + /** + * sendGroupReadReceiptRequest 的接口监听 + */ + setOnGroupReadReceiptRequestSentListener(callback) { + const eventName = 'IRCIMIWListener:onGroupReadReceiptRequestSent'; + this._setListener(eventName, callback); + } + /** + * [sendGroupReadReceiptResponse] 的接口监听 + */ + setOnGroupReadReceiptResponseSentListener(callback) { + const eventName = 'IRCIMIWListener:onGroupReadReceiptResponseSent'; + this._setListener(eventName, callback); + } + /** + * [changeNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursChangedListener(callback) { + const eventName = 'IRCIMIWListener:onNotificationQuietHoursChanged'; + this._setListener(eventName, callback); + } + /** + * [removeNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onNotificationQuietHoursRemoved'; + this._setListener(eventName, callback); + } + /** + * [loadNotificationQuietHours] 的接口监听 + */ + setOnNotificationQuietHoursLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onNotificationQuietHoursLoaded'; + this._setListener(eventName, callback); + } + /** + * [changeConversationNotificationLevel] 的接口监听 + */ + setOnConversationNotificationLevelChangedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationNotificationLevelChanged'; + this._setListener(eventName, callback); + } + /** + * [loadConversationNotificationLevel] 的接口监听 + */ + setOnConversationNotificationLevelLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationNotificationLevelLoaded'; + this._setListener(eventName, callback); + } + /** + * [changeConversationTypeNotificationLevel] 的接口监听 + */ + setOnConversationTypeNotificationLevelChangedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationTypeNotificationLevelChanged'; + this._setListener(eventName, callback); + } + /** + * [loadConversationTypeNotificationLevel] 的接口监听 + */ + setOnConversationTypeNotificationLevelLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onConversationTypeNotificationLevelLoaded'; + this._setListener(eventName, callback); + } + /** + * [changeUltraGroupDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupDefaultNotificationLevelChangedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupDefaultNotificationLevelChanged'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupDefaultNotificationLevelLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupDefaultNotificationLevelLoaded'; + this._setListener(eventName, callback); + } + /** + * [changeUltraGroupChannelDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupChannelDefaultNotificationLevelChangedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupChannelDefaultNotificationLevelChanged'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupChannelDefaultNotificationLevel] 的接口监听 + */ + setOnUltraGroupChannelDefaultNotificationLevelLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupChannelDefaultNotificationLevelLoaded'; + this._setListener(eventName, callback); + } + /** + * [changePushContentShowStatus] 的接口监听 + */ + setOnPushContentShowStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onPushContentShowStatusChanged'; + this._setListener(eventName, callback); + } + /** + * [changePushLanguage] 的接口监听 + */ + setOnPushLanguageChangedListener(callback) { + const eventName = 'IRCIMIWListener:onPushLanguageChanged'; + this._setListener(eventName, callback); + } + /** + * [changePushReceiveStatus] 的接口监听 + */ + setOnPushReceiveStatusChangedListener(callback) { + const eventName = 'IRCIMIWListener:onPushReceiveStatusChanged'; + this._setListener(eventName, callback); + } + /** + * [loadMessageCount] 的接口监听 + */ + setOnMessageCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onMessageCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadTopConversations] 的接口监听 + */ + setOnTopConversationsLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onTopConversationsLoaded'; + this._setListener(eventName, callback); + } + /** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息存入数据库的回调 + */ + setOnGroupMessageToDesignatedUsersAttachedListener(callback) { + const eventName = 'IRCIMIWListener:onGroupMessageToDesignatedUsersAttached'; + this._setListener(eventName, callback); + } + /** + * [sendGroupMessageToDesignatedUsers] 的接口监听 + * 消息发送完成的回调 + */ + setOnGroupMessageToDesignatedUsersSentListener(callback) { + const eventName = 'IRCIMIWListener:onGroupMessageToDesignatedUsersSent'; + this._setListener(eventName, callback); + } + /** + * [syncUltraGroupReadStatus] 的接口监听 + */ + setOnUltraGroupReadStatusSyncedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupReadStatusSynced'; + this._setListener(eventName, callback); + } + /** + * [loadConversationsForAllChannel] 的接口监听 + */ + setOnConversationsLoadedForAllChannelListener(callback) { + const eventName = 'IRCIMIWListener:onConversationsLoadedForAllChannel'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupUnreadMentionedCount] 的接口监听 + */ + setOnUltraGroupUnreadMentionedCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupUnreadMentionedCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [loadUltraGroupUnreadCount] 的接口监听 + */ + setOnUltraGroupUnreadCountLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupUnreadCountLoaded'; + this._setListener(eventName, callback); + } + /** + * [modifyUltraGroupMessage] 的接口监听 + */ + setOnUltraGroupMessageModifiedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessageModified'; + this._setListener(eventName, callback); + } + /** + * [recallUltraGroupMessage] 的接口监听 + */ + setOnUltraGroupMessageRecalledListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessageRecalled'; + this._setListener(eventName, callback); + } + /** + * [clearUltraGroupMessages] 的接口监听 + */ + setOnUltraGroupMessagesClearedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessagesCleared'; + this._setListener(eventName, callback); + } + /** + * [clearUltraGroupMessagesForAllChannel] 的接口监听 + */ + setOnUltraGroupMessagesClearedForAllChannelListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessagesClearedForAllChannel'; + this._setListener(eventName, callback); + } + /** + * [sendUltraGroupTypingStatus] 的接口监听 + */ + setOnUltraGroupTypingStatusSentListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupTypingStatusSent'; + this._setListener(eventName, callback); + } + /** + * [loadBatchRemoteUltraGroupMessages] 的接口监听 + */ + setOnBatchRemoteUltraGroupMessagesLoadedListener(callback) { + const eventName = 'IRCIMIWListener:onBatchRemoteUltraGroupMessagesLoaded'; + this._setListener(eventName, callback); + } + /** + * [updateUltraGroupMessageExpansion] 的接口监听 + */ + setOnUltraGroupMessageExpansionUpdatedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessageExpansionUpdated'; + this._setListener(eventName, callback); + } + /** + * [removeUltraGroupMessageExpansionForKeys] 的接口监听 + */ + setOnUltraGroupMessageExpansionForKeysRemovedListener(callback) { + const eventName = 'IRCIMIWListener:onUltraGroupMessageExpansionForKeysRemoved'; + this._setListener(eventName, callback); + } +} diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.d.ts b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.d.ts new file mode 100644 index 0000000..894ee73 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.d.ts @@ -0,0 +1,3 @@ +import { RCIMIWLogLevel } from "../RCIMDefines"; +export declare function log(level: RCIMIWLogLevel, msg: string): void; +export declare function setLogLevel(level: RCIMIWLogLevel): void; diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.js b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.js new file mode 100644 index 0000000..0a99b84 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/RCIMLog.js @@ -0,0 +1,39 @@ +import { RCIMIWLogLevel } from "../RCIMDefines"; +let logLevel = RCIMIWLogLevel.info; +export function log(level, msg) { + if (level <= logLevel) { + let logStr = `${getLogLevelFlag(level)}/[RC:UniLog][IM]: ${msg}`; + switch (level) { + case RCIMIWLogLevel.error: + console.error(logStr); + break; + case RCIMIWLogLevel.warn: + console.warn(logStr); + break; + case RCIMIWLogLevel.info: + console.info(logStr); + break; + case RCIMIWLogLevel.debug: + console.debug(logStr); + break; + default: + console.log(logStr); + break; + } + } +} +export function setLogLevel(level) { + logLevel = level; +} +function getLogLevelFlag(level) { + switch (level) { + case RCIMIWLogLevel.error: + return 'E'; + case RCIMIWLogLevel.warn: + return 'W'; + case RCIMIWLogLevel.debug: + return 'D'; + default: + return 'I'; + } +} diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.d.ts b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.d.ts new file mode 100644 index 0000000..ca0b12d --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.d.ts @@ -0,0 +1,63 @@ +/** + * 预定义的验证规则,只包含`值类型`数据验证 + * 引用类型数据需使用自定义 validator 校验函数进行校验 + */ +export declare enum AssertRules { + /** + * 类型为字符串,且长度大于 0 + */ + STRING = 0, + /** + * 类型仅为 String + */ + ONLY_STRING = 1, + /** + * 类型为数字 + */ + NUMBER = 2, + /** + * 类型为布尔值 + */ + BOOLEAN = 3, + /** + * 类型为对象 + */ + OBJECT = 4, + /** + * 类型为数组 + */ + ARRAY = 5, + /** + * 类型为 callback 回调对象,包含 callback.onSuccess、callback.onError + */ + /** + 类型为数组,数组中为 number 类型 + */ + NUMBER_ARRAY = 6 +} +export declare class RCAssertError extends Error { + constructor(message?: string); +} +/** + * 参数校验,该方法用于对业务层入参数据检查,及时抛出异常通知业务层进行修改 + * @deprecated 优先使用 `validate` 替代,禁止直接 throw error 阻断调用栈 + * @description + * 1. 必填参数,value 需符合 validator 验证规,否则抛出异常 + * 2. 非必填参数,value 可为 undefined | null 或符合 validator 规则 + * @param key 字段名,仅用于验证失败时给出提示信息 + * @param value 待验证的值 + * @param validator 期望类型或校验规则函数,若使用规则函数 + * @param required 是否为必填参数,默认为 `false` + */ +export declare const assert: (key: string, value: any, validator: AssertRules | ((value: any) => boolean), required?: boolean) => void; +/** + * 参数校验,该方法用于对业务层入参数据检查,与 `assert` 函数不同的是其返回 boolean 值而非直接抛出异常 + * @description + * 1. 必填参数,value 需符合 validator 验证规,否则抛出异常 + * 2. 非必填参数,value 可为 undefined | null 或符合 validator 规则 + * @param key 字段名,仅用于验证失败时给出提示信息 + * @param value 待验证的值 + * @param validator 期望类型或校验规则函数,若使用规则函数 + * @param required 是否为必填参数,默认为 `false` + */ +export declare const validate: (key: string, value: any, validator: AssertRules | ((value?: any) => boolean), required?: boolean) => boolean; diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.js b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.js new file mode 100644 index 0000000..ea0b3c2 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/assert.js @@ -0,0 +1,104 @@ +import { isNumber, isNumberArray, isObject, isString, isUndefined, notEmptyArray, notEmptyString, } from './validator'; +/** + * 预定义的验证规则,只包含`值类型`数据验证 + * 引用类型数据需使用自定义 validator 校验函数进行校验 + */ +export var AssertRules; +(function (AssertRules) { + /** + * 类型为字符串,且长度大于 0 + */ + AssertRules[AssertRules["STRING"] = 0] = "STRING"; + /** + * 类型仅为 String + */ + AssertRules[AssertRules["ONLY_STRING"] = 1] = "ONLY_STRING"; + /** + * 类型为数字 + */ + AssertRules[AssertRules["NUMBER"] = 2] = "NUMBER"; + /** + * 类型为布尔值 + */ + AssertRules[AssertRules["BOOLEAN"] = 3] = "BOOLEAN"; + /** + * 类型为对象 + */ + AssertRules[AssertRules["OBJECT"] = 4] = "OBJECT"; + /** + * 类型为数组 + */ + AssertRules[AssertRules["ARRAY"] = 5] = "ARRAY"; + /** + * 类型为 callback 回调对象,包含 callback.onSuccess、callback.onError + */ + // CALLBACK, + // /** + // * ChannelId 验证,必须为 String 且不超过 20 位 且不能包含下划线 + // */ + // CHANNEL_ID, + /** + 类型为数组,数组中为 number 类型 + */ + AssertRules[AssertRules["NUMBER_ARRAY"] = 6] = "NUMBER_ARRAY"; +})(AssertRules || (AssertRules = {})); +const RulesDesc = { + [AssertRules.STRING]: 'type is String and length > 0', + [AssertRules.ONLY_STRING]: 'type is string', + [AssertRules.NUMBER]: 'type is number', + [AssertRules.BOOLEAN]: 'type is Boolean', + [AssertRules.OBJECT]: 'type is Object', + [AssertRules.ARRAY]: 'type is Array', + [AssertRules.NUMBER_ARRAY]: 'type is Array and item is Number', +}; +const validators = { + [AssertRules.STRING]: notEmptyString, + [AssertRules.ONLY_STRING]: isString, + [AssertRules.NUMBER]: isNumber, + [AssertRules.BOOLEAN]: (value) => typeof value === 'boolean', + [AssertRules.OBJECT]: isObject, + [AssertRules.ARRAY]: notEmptyArray, + [AssertRules.NUMBER_ARRAY]: isNumberArray, +}; +export class RCAssertError extends Error { + constructor(message) { + super(message); + this.name = 'RCAssertError'; + } +} +/** + * 参数校验,该方法用于对业务层入参数据检查,及时抛出异常通知业务层进行修改 + * @deprecated 优先使用 `validate` 替代,禁止直接 throw error 阻断调用栈 + * @description + * 1. 必填参数,value 需符合 validator 验证规,否则抛出异常 + * 2. 非必填参数,value 可为 undefined | null 或符合 validator 规则 + * @param key 字段名,仅用于验证失败时给出提示信息 + * @param value 待验证的值 + * @param validator 期望类型或校验规则函数,若使用规则函数 + * @param required 是否为必填参数,默认为 `false` + */ +export const assert = (key, value, validator, required = false) => { + if (!validate(key, value, validator, required)) { + throw new RCAssertError(`'${key}' is invalid: ${JSON.stringify(value)}`); + } +}; +/** + * 参数校验,该方法用于对业务层入参数据检查,与 `assert` 函数不同的是其返回 boolean 值而非直接抛出异常 + * @description + * 1. 必填参数,value 需符合 validator 验证规,否则抛出异常 + * 2. 非必填参数,value 可为 undefined | null 或符合 validator 规则 + * @param key 字段名,仅用于验证失败时给出提示信息 + * @param value 待验证的值 + * @param validator 期望类型或校验规则函数,若使用规则函数 + * @param required 是否为必填参数,默认为 `false` + */ +export const validate = (key, value, validator, required = false) => { + let validatorFunc = validators[validator] || validator; + const isValid = required ? validatorFunc(value) : (isUndefined(value) || value == null || validatorFunc(value)); + if (!isValid) { + // 打印无效参数到控制台便于定位问题 + // eslint-disable-next-line no-console + console?.error(`'${key}' is invalid: ${JSON.stringify(value)}, the supported ${RulesDesc[validator]}`); + } + return isValid; +}; diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.d.ts b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.d.ts new file mode 100644 index 0000000..94e0eb5 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.d.ts @@ -0,0 +1,64 @@ +/** + * 检查参数是否为字符串 + * 只做类型检查,不做长度检查,故当字符串长度为 0,结果依然为 true + * @param value + */ +export declare const isString: (value: unknown) => boolean; +/** + * 检测参数是否为布尔值 + * @param value + */ +export declare const isBoolean: (value: unknown) => boolean; +/** + * 检查参数是否为 number 数据 + * @param value + */ +export declare const isNumber: (value: unknown) => boolean; +/** + * 检查参数是否为数组 + * 只做类型检查,不做长度检查 + * 如 UnitArray、BufferArray 等也属于数组 + * @param arr + */ +export declare const isArray: (arr: unknown) => boolean; +/** + * 检查参数是否为 ArrayBuffer + * @param arr + */ +export declare const isArrayBuffer: (arr: unknown) => boolean; +/** + * 检查参数是否为长度非 0 的字符串 + * @param str + */ +export declare const notEmptyString: (str: string) => boolean; +/** + * 检查参数是否为长度非 0 的数组 + * @param str + */ +export declare const notEmptyArray: (arr: any[]) => boolean; +/** + * 检查参数是否为对象 + * @param val + */ +export declare const isObject: (val: any) => boolean; +/** + * 检查参数是否为函数 + * @param val + */ +export declare const isFunction: (val: any) => boolean; +/** + * 检查参数是否为undefined + * @param val + */ +export declare const isUndefined: (val: any) => boolean; +/** + * 检查参数是否为 null +*/ +export declare const isNull: (val: any) => boolean; +/** + * 检查对象不为空 + * @param val +*/ +export declare const notEmptyObject: (val: Object) => boolean; +export declare const isValidChannelId: (value: any) => boolean; +export declare const isNumberArray: (value: any) => boolean; diff --git a/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.js b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.js new file mode 100644 index 0000000..4dd8563 --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/js_sdk/utils/validator.js @@ -0,0 +1,85 @@ +/** + * 检查参数是否为字符串 + * 只做类型检查,不做长度检查,故当字符串长度为 0,结果依然为 true + * @param value + */ +export const isString = (value) => typeof value === 'string'; +/** + * 检测参数是否为布尔值 + * @param value + */ +export const isBoolean = (value) => typeof value === 'boolean'; +/** + * 检查参数是否为 number 数据 + * @param value + */ +export const isNumber = (value) => typeof value === 'number' && !Number.isNaN(value); +/** + * 检查参数是否为数组 + * 只做类型检查,不做长度检查 + * 如 UnitArray、BufferArray 等也属于数组 + * @param arr + */ +export const isArray = (arr) => Object.prototype.toString.call(arr).indexOf('Array') !== -1; +/** + * 检查参数是否为 ArrayBuffer + * @param arr + */ +export const isArrayBuffer = (arr) => Object.prototype.toString.call(arr) === '[object ArrayBuffer]'; +/** + * 检查参数是否为长度非 0 的字符串 + * @param str + */ +export const notEmptyString = (str) => isString(str) && str.length > 0; +/** + * 检查参数是否为长度非 0 的数组 + * @param str + */ +export const notEmptyArray = (arr) => isArray(arr) && arr.length > 0; +/** + * 检查参数是否为对象 + * @param val + */ +export const isObject = (val) => Object.prototype.toString.call(val) === '[object Object]'; +/** + * 检查参数是否为函数 + * @param val + */ +export const isFunction = (val) => Object.prototype.toString.call(val) === '[object Function]'; +/** + * 检查参数是否为undefined + * @param val + */ +// IE 下 undefined 为 Object +export const isUndefined = (val) => val === undefined + || Object.prototype.toString.call(val) === '[object Undefined]'; +/** + * 检查参数是否为 null +*/ +export const isNull = (val) => Object.prototype.toString.call(val) === '[object Null]'; +/** + * 检查对象不为空 + * @param val +*/ +export const notEmptyObject = (val) => { + for (let key in val) { + if (Object.prototype.hasOwnProperty.call(val, key)) { + return true; + } + } + return false; +}; +export const isValidChannelId = (value) => { + let flag = false; + if (isString(value) && !(/_/g.test(value)) && value.length <= 20) { + flag = true; + } + return flag; +}; +export const isNumberArray = (value) => { + let flag = false; + if (notEmptyArray(value)) { + flag = value.every((item) => isNumber(item)); + } + return flag; +}; diff --git a/uni_modules/RongCloud-IMWrapper-V2/package.json b/uni_modules/RongCloud-IMWrapper-V2/package.json new file mode 100644 index 0000000..2bf2e9f --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/package.json @@ -0,0 +1,81 @@ +{ + "id": "RongCloud-IMWrapper-V2", + "displayName": "RongCloud-IMWrapper-V2", + "version": "5.30.0-1", + "description": "融云IM原生插件包装层", + "keywords": [ + "RongCloud", + "IM" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "", + "type": "sdk-js" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y", + "app-harmony": "u", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "n", + "Android Browser": "n", + "微信浏览器(Android)": "n", + "QQ浏览器(Android)": "n" + }, + "H5-pc": { + "Chrome": "n", + "IE": "n", + "Edge": "n", + "Firefox": "n", + "Safari": "n" + }, + "小程序": { + "微信": "n", + "阿里": "n", + "百度": "n", + "字节跳动": "n", + "QQ": "n" + }, + "快应用": { + "华为": "n", + "联盟": "n" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/RongCloud-IMWrapper-V2/readme.md b/uni_modules/RongCloud-IMWrapper-V2/readme.md new file mode 100644 index 0000000..a8889ca --- /dev/null +++ b/uni_modules/RongCloud-IMWrapper-V2/readme.md @@ -0,0 +1,3 @@ +# RongCloud-IMWrapper-V2 + +融云 RCUniIMV2 原生插件的 JS 适配层,请搭配 RCUniIMV2 使用。 \ No newline at end of file