This commit is contained in:
bobobobo
2026-02-04 23:01:03 +08:00
parent f59e09f4ee
commit 737d8e9a69
25 changed files with 12456 additions and 106 deletions

View File

@@ -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)

View File

@@ -1,11 +1,14 @@
<script setup lang="ts">
import * as CallLib from '@/uni_modules/RongCloud-CallWrapper/lib/index.esm'
import ToolbarItemContainer from '../toolbar-item-container/index.vue'
import custom from '../../../../assets/icon/telephone-icon.svg'
import videoIcon from '../../../../assets/icon/video-icon.svg'
import { isUniFrameWork } from '../../../../utils/env'
import { computed } from 'vue'
import { computed, ref } from 'vue'
import { type IConversationModel } from '@tencentcloud/chat-uikit-engine-lite'
CallLib.init({});
const props = withDefaults(
defineProps<{
/** 通话状态: 0 语音 1 视频 */
@@ -26,28 +29,97 @@
const emits = defineEmits(['onDialogPopupShowOrHide'])
const container = ref()
const closeDialog = () => {
container?.value?.toggleDialogDisplay(false)
}
const onDialogShow = () => {
console.log('弹出窗口')
console.log(props.currentConversation)
// emits('onDialogPopupShowOrHide', true)
emits('onDialogPopupShowOrHide', true)
}
const onDialogClose = () => {
console.log('关闭窗口')
// emits('onDialogPopupShowOrHide', false)
emits('onDialogPopupShowOrHide', false)
}
CallLib.onCallReceived(res => {
console.log(res)
console.log(
'Engine:OnCallReceived=>' + '监听通话呼入, 目标id=>',
res.data.targetId
)
})
CallLib.onCallConnected(res => {
console.log(res)
console.log(
'Engine:OnCallConnected=>' +
'已建立通话通话接通时,通过回调 onCallConnected 通知当前 call 的详细信息',
res
)
})
CallLib.onRemoteUserJoined(res => {
console.log(
'Engine:OnRemoteUserJoined=>' +
'主叫端拨出电话被叫端收到请求后加入通话被叫端Id为=>',
res.data.userId
)
})
CallLib.onCallDisconnected(res => {
console.log(
'Engine:OnCallDisconnected=>' + '挂断成功, 挂断原因=>',
res.data.reason
)
})
const onDial = () => {
const data = props.currentConversation.userProfile
// data.userID
CallLib.enableMicrophone(true)
CallLib.startSingleCall(data.userID, 0, '邀请您进行语音通话')
}
</script>
<template>
<ToolbarItemContainer
ref="container"
needBottomPopup
:iconFile="evaluateIcon"
:iconWidth="isUniFrameWork ? '34px' : '20px'"
:iconHeight="isUniFrameWork ? '34px' : '20px'"
:title="isType ? '语音通话' : '视频通话'"
@onDialogShow="onDialogShow"
@onDialogClose="onDialogClose"
></ToolbarItemContainer>
>
<view class="box-index">
<view class="top-icon">
<uni-icons
type="back"
color="#ffffff"
size="42rpx"
@click.stop="closeDialog"
></uni-icons>
</view>
<button @click.stop="onDial">拨打</button>
<button
@click.stop="
() => {
CallLib.enableMicrophone(true)
CallLib.accept()
}
"
>
接听
</button>
</view>
</ToolbarItemContainer>
</template>
<style scoped lang="scss" src="./style/index.scss"></style>

View File

@@ -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;
}
}

View File

@@ -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<number, string> = new Map([
[3123, '文本包含本地审核拦截词'],
@@ -21,26 +23,32 @@ export const sendMessageErrorCodeMap: Map<number, string> = 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()
}
}

View File

@@ -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" : [
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",
@@ -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" : {

View File

@@ -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()

View File

@@ -0,0 +1,30 @@
## 5.30.02025-12-22
配合 RCUniCall 升级至 5.30.0 版本。
## 5.8.22024-08-16
完善接口的注释和变量类型
## 5.6.42023-12-15
补全接口参数类型
## 5.4.5-22023-08-04
新增 setPushConfig 接口
## 5.4.02023-05-08
适配融云 Call SDK 5.4.0
## 5.1.17-52022-07-12
优化代码结构
## 5.1.17-42022-07-11
新增网络监测回调
## 5.1.17-32022-07-04
新增音频和视频配置接口
## 5.1.17-12022-04-22
迁移美颜相关接口到 RongCloud-BeautyWrapper 中
## 5.1.152022-01-10
* 更新 SDK
## 1.0.42022-01-06
* 修复初始化问题
## 1.0.32022-01-06
* 更新插件内容
## 1.0.22022-01-06
* 添加枚举值
## 1.0.12022-01-05
* 更新目录结构
## 1.0.02022-01-05
* 支持 Calllib JS 层

View File

@@ -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<T> {
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 优先级高于模板 IDtemplateId中对应的标题和推送内容。
*/
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<RCCallIWCallSession>) => void): void;
/**
* 移除监听-接收到通话呼入
*/
declare function removeCallReceivedListener(): void;
/**
* 添加连接监听函数
*
* @param listener 回调函数
*/
declare function onCallConnected(listener: (result: UniListenerResult<ListenerNullData>) => void): void;
/**
* 移除监听-通话已接通
*/
declare function removeCallConnectedListener(): void;
/**
* 添加挂断监听函数
*
* @param listener 回调函数
*/
declare function onCallDisconnected(listener: (result: UniListenerResult<ListenerOnCallDisconnectedData>) => void): void;
/**
* 移除监听-通话已结束
* @param 挂断原因
*/
declare function removeCallDisconnectedListener(): void;
/**
* 通话中的某一个参与者,邀请好友加入通话
*
* @param listener 回调函数
*/
declare function onRemoteUserInvited(listener: (result: UniListenerResult<ListenerOnRemoteUserInvitedData>) => void): void;
/**
* 移除监听-有用户被邀请加入通话
*/
declare function removeRemoteUserInvited(): void;
/**
* 对端用户加入了通话
* @param listener 回调函数
*/
declare function onRemoteUserJoined(listener: (result: UniListenerResult<RCCallIWUserProfile>) => void): void;
/**
* 移除监听-对端用户加入了通话
*/
declare function removeRemoteUserJoinedListener(): void;
/**
* 远端用户离开 (只在群聊时用触发)
* @param listener 回调函数
*/
declare function onRemoteUserLeft(listener: (result: UniListenerResult<ListenerOnRemoteUserLeftData>) => void): void;
/**
* 移除监听-远端用户离开
*/
declare function removeRemoteUserLeftListener(): void;
/**
* 电话已拨出 主叫端拨出电话后,通过回调 onCallOutgoing 通知当前 call 的详细信息
* @param listener 回调函数
*/
declare function onCallOutgoing(listener: (result: UniListenerResult<ListenerNullData>) => void): void;
/**
* 移除监听-开始呼叫通话的回调
*/
declare function removeCallOutgoingListener(): void;
/**
* 被叫端正在振铃,主叫端拨出电话,被叫端收到请求,发出振铃响应时监听
* @param listener 回调函数
*/
declare function onRemoteUserRinging(listener: (result: UniListenerResult<ListenerOnRemoteUserRingingData>) => void): void;
/**
* 移除监听-对端用户正在振铃
*/
declare function removeRemoteUserRingingListener(): void;
/**
* 通话出现错误的回调
* @param listener 回调函数
*/
declare function onError(listener: (result: UniListenerResult<ListenerResultError>) => void): void;
/**
* 移除监听-通话出现错误的回调
*/
declare function removeErrorListener(): void;
/**
* 对端用户切换了媒体类型
* @param listener 回调函数
*/
declare function onRemoteUserMediaTypeChanged(listener: (result: UniListenerResult<ListenerOnRemoteUserMediaTypeChangedData>) => void): void;
/**
* 移除监听-对端用户切换了媒体类型
*/
declare function removeRemoteUserMediaTypeChangedListener(): void;
/**
* 对端用户开关摄像头
* @param listener 回调函数
*/
declare function onRemoteUserCameraStateChanged(listener: (result: UniListenerResult<ListenerOnRemoteUserCameraStateChangedData>) => void): void;
/**
* 移除监听- 远端摄像头状态变更
*/
declare function removeRemoteUserCameraStateChangedListener(): void;
/**
* 对端用户开关麦克风
* @param listener 回调函数
*/
declare function onRemoteUserMicrophoneStateChanged(listener: (result: UniListenerResult<ListenerOnRemoteUserMicrophoneStateChangedData>) => void): void;
/**
* 移除监听- 远端麦克风状态变更
*/
declare function removeRemoteUserMicrophoneStateChangedListener(): void;
/**
* 网络状态监测, 通话建立成功后才会有回调
* @param listener
*/
declare function onNetworkQuality(listener: (result: UniListenerResult<ListenerNetworkQualityData>) => void): void;
/**
* 移除监听 - 网络状态监测
*/
declare function removeNetworkQualityListener(): void;
/**
* 开启或关闭摄像头的回调
*/
declare function onEnableCamera(listener: (result: UniListenerResult<ListenerOnEnableCameraData>) => void): void;
/**
* 移除监听-开启或关闭摄像头的回调
*/
declare function removeEnableCameraListener(): void;
/**
* 切换摄像头回调
*/
declare function onSwitchCamera(listener: (result: UniListenerResult<ListenerOnSwitchCameraData>) => 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<string>, observerUserIds: Array<string>, 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 };

View File

@@ -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 };

View File

@@ -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;

View File

@@ -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"
}
}
}
}
}

View File

@@ -0,0 +1,2 @@
# RongCloud-CallWrapper
融云 RCUniCall 原生插件的 JS 适配层,请搭配 RCUniCall 使用。

View File

@@ -0,0 +1,28 @@
## 5.30.0-12025-12-25
优化接口参数、回调参数的类型声明
## 5.30.0-12025-12-25
优化接口参数、回调参数的类型声明
## 5.30.02025-12-12
同步 RCUniIMV2 升级至 5.30.0
## 5.12.12024-12-16
支持新版原生自定义消息
## 5.8.32024-08-16
增加对接口参数类型的检查
## 5.6.102024-03-18
1、IM 初始化配置新增区域码设置
2、新增推送 token 上报接口
## 5.4.52023-07-05
适配 RCUniIMV2 原生插件 5.4.5,会话新增 operationTime 参数
## 5.4.02023-04-24
适配融云 IM 5.4.0 版本
## 5.2.42022-08-26
融云 uni-app im sdk 5.2.3 以及之前的旧版 SDK 已不再进行维护,旧版开发文档不再公开提供,建议已集成旧版 SDK 的客户迁移到新版本 SDK。新版本 SDK 整体进行了优化重构。所有新功能都将在新版 SDK 中进行添加。
## 5.2.32022-07-08
1.添加聊天室属性KV
2.敏感信息拦截回调
## 5.1.8-12022-05-09
增加 searchMessagesByUserId 方法
## 5.1.3-72022-01-19
调整私聊已读回执回调参数
## 0.0.12022-01-19
从npm迁入插件市场

File diff suppressed because it is too large Load Diff

View File

@@ -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 = {}));

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
import { RCIMIWLogLevel } from "../RCIMDefines";
export declare function log(level: RCIMIWLogLevel, msg: string): void;
export declare function setLogLevel(level: RCIMIWLogLevel): void;

View File

@@ -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';
}
}

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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;

View File

@@ -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;
};

View File

@@ -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"
}
}
}
}
}

View File

@@ -0,0 +1,3 @@
# RongCloud-IMWrapper-V2
融云 RCUniIMV2 原生插件的 JS 适配层,请搭配 RCUniIMV2 使用。