Files
uniapp-im-shop/uni_modules/RongCloud-CallWrapper/lib/index.js
2026-02-05 00:36:36 +08:00

405 lines
12 KiB
JavaScript

/*
* 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');
// 枚举定义
export const RCCallIWCamera = {
NONE: 0,
FRONT: 1,
BACK: 2
};
export const RCCallIWMediaType = {
AUDIO: 0,
AUDIO_VIDEO: 1
};
export const 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
};
export const 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
};
export const RCCallIWAudioCodecType = {
PCMU: 0,
OPUS: 111
};
export const RCCallIWAudioSource = {
DEFAULT: 0,
MIC: 1,
VOICE_UPLINK: 2,
VOICE_DOWNLINK: 3,
VOICE_CALL: 4,
CAMCORDER: 5,
VOICE_RECOGNITION: 6,
VOICE_COMMUNICATION: 7
};
export const RCCallIWVideoProfile = {
PROFILE_144_256: 0,
PROFILE_240_240: 1,
PROFILE_240_320: 2,
PROFILE_360_480: 3,
PROFILE_360_640: 4,
PROFILE_480_640: 5,
PROFILE_480_720: 6,
PROFILE_720_1280: 7,
PROFILE_1080_1920: 8,
PROFILE_144_256_HIGH: 9,
PROFILE_240_240_HIGH: 10,
PROFILE_240_320_HIGH: 11,
PROFILE_360_480_HIGH: 12,
PROFILE_360_640_HIGH: 13,
PROFILE_480_640_HIGH: 14,
PROFILE_480_720_HIGH: 15,
PROFILE_720_1280_HIGH: 16,
PROFILE_1080_1920_HIGH: 17
};
export const RCCallIWCameraOrientation = {
PORTRAIT: 0,
PORTRAIT_UPSIDE_DOWN: 1,
LANDSCAPE_RIGHT: 2,
LANDSCAPE_LEFT: 3
};
export const RCCallIWVideoBitrateMode = {
CQ: 0,
VBR: 1,
CBR: 2
};
export const RCCallIWNetworkQuality = {
UNKNOWN: 0,
EXCELLENT: 1,
GOOD: 2,
POOR: 3,
BAD: 4,
TERRIBLE: 5
};
export const RCCallIWImportanceHW = {
NORMAL: 0,
LOW: 1
};
export const RCCallIWCallType = {
SINGLE: 0,
GROUP: 1
};
export const RCCallIWUserType = {
NORMAL: 0,
OBSERVER: 1
};
const call = uni.requireNativePlugin('RongCloud-Call-RCUniCall');
const Platform = uni.getSystemInfoSync().platform;
export function init() {
logger.log(`init Platform->${Platform}`);
call.init({});
}
export function unInit() {
logger.log(`unInit Platform->${Platform}`);
call.unInit();
}
export function onCallReceived(listener) {
logger.log(`Engine:OnCallReceived 监听通话呼入 Platform->${Platform}`);
call.addEventListener("Engine:OnCallReceived", listener);
}
export function removeCallReceivedListener() {
logger.log(`removeCallReceivedListener`);
call.removeAllEventListeners('Engine:OnCallReceived');
}
export function onCallConnected(listener) {
logger.log(`Engine:OnCallConnected 已建立通话通话接通 Platform->${Platform}`);
call.addEventListener("Engine:OnCallConnected", listener);
}
export function removeCallConnectedListener() {
logger.log(`removeCallConnectedListener`);
call.removeAllEventListeners('Engine:OnCallConnected');
}
export function onCallDisconnected(listener) {
logger.log(`Engine:OnCallDisconnected 监听通话结束 Platform->${Platform}`);
call.addEventListener("Engine:OnCallDisconnected", listener);
}
export function removeCallDisconnectedListener() {
logger.log(`removeCallDisconnectedListener`);
call.removeAllEventListeners('Engine:OnCallDisconnected');
}
export function onRemoteUserInvited(listener) {
logger.log(`Engine:OnRemoteUserInvited 通话中的某一个参与者,邀请好友加入通话 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserInvited", listener);
}
export function removeRemoteUserInvited() {
logger.log(`removeRemoteUserInvited`);
call.removeAllEventListeners('Engine:OnRemoteUserInvited');
}
export function onRemoteUserJoined(listener) {
logger.log(`Engine:OnRemoteUserJoined 对端用户加入通话 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserJoined", listener);
}
export function removeRemoteUserJoinedListener() {
logger.log(`removeRemoteUserJoinedListener`);
call.removeAllEventListeners('Engine:OnRemoteUserJoined');
}
export function onRemoteUserLeft(listener) {
logger.log(`Engine:OnRemoteUserLeft 对端用户挂断(群聊触发) Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserLeft", listener);
}
export function removeRemoteUserLeftListener() {
logger.log(`removeRemoteUserLeftListener`);
call.removeAllEventListeners('Engine:OnRemoteUserLeft');
}
export function onCallOutgoing(listener) {
logger.log(`Engine:OnCallOutgoing 电话已拨出,通知当前 call 的详细信息 Platform->${Platform}`);
call.addEventListener("Engine:OnCallOutgoing", listener);
}
export function removeCallOutgoingListener() {
logger.log(`removeCallOutgoingListener`);
call.removeAllEventListeners('Engine:OnCallOutgoing');
}
export function onRemoteUserRinging(listener) {
logger.log(`Engine:OnRemoteUserRinging 被叫端收到请求,发出振铃响应时监听 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserRinging", listener);
}
export function removeRemoteUserRingingListener() {
logger.log(`removeRemoteUserRingingListener`);
call.removeAllEventListeners('Engine:OnRemoteUserRinging');
}
export function onError(listener) {
logger.log(`Engine:OnError 通话出现错误 Platform->${Platform}`);
call.addEventListener("Engine:OnError", listener);
}
export function removeErrorListener() {
logger.log(`removeErrorListener`);
call.removeAllEventListeners('Engine:OnError');
}
export function onRemoteUserMediaTypeChanged(listener) {
logger.log(`Engine:OnRemoteUserMediaTypeChanged 对端用户切换了媒体类型 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserMediaTypeChanged", listener);
}
export function removeRemoteUserMediaTypeChangedListener() {
logger.log(`removeRemoteUserMediaTypeChangedListener`);
call.removeAllEventListeners('Engine:OnRemoteUserMediaTypeChanged');
}
export function onRemoteUserCameraStateChanged(listener) {
logger.log(`Engine:OnRemoteUserCameraStateChanged 对端用户关闭了摄像头 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserCameraStateChanged", listener);
}
export function removeRemoteUserCameraStateChangedListener() {
logger.log(`removeRemoteUserCameraStateChangedListener`);
call.removeAllEventListeners('Engine:OnRemoteUserCameraStateChanged');
}
export function onRemoteUserMicrophoneStateChanged(listener) {
logger.log(`Engine:OnRemoteUserMicrophoneStateChanged 对端用户开关麦克风 Platform->${Platform}`);
call.addEventListener("Engine:OnRemoteUserMicrophoneStateChanged", listener);
}
export function removeRemoteUserMicrophoneStateChangedListener() {
logger.log(`removeRemoteUserMicrophoneStateChanged`);
call.removeAllEventListeners('Engine:OnRemoteUserMicrophoneStateChanged');
}
export function onNetworkQuality(listener) {
logger.log(`Engine:OnNetworkQuality Platform->${Platform}`);
call.addEventListener("Engine:OnNetworkQuality", listener);
}
export function removeNetworkQualityListener() {
call.removeAllEventListeners('Engine:OnNetworkQuality');
}
export function onEnableCamera(listener) {
logger.log(`Engine:OnEnableCamera Platform->${Platform}`);
call.addEventListener("Engine:OnEnableCamera", listener);
}
export function removeEnableCameraListener() {
logger.log(`removeEnableCameraListener`);
call.removeAllEventListeners('Engine:OnEnableCamera');
}
export function onSwitchCamera(listener) {
logger.log(`Engine:OnSwitchCamera Platform->${Platform}`);
call.addEventListener("Engine:OnSwitchCamera", listener);
}
export function removeSwitchCameraListener() {
logger.log(`removeSwitchCameraListener`);
call.removeAllEventListeners('Engine:OnSwitchCamera');
}
export function getCurrentCallSession() {
logger.log(`getCurrentCallSession Platform->${Platform}`);
return call.getCurrentCallSession();
}
export function hangup() {
logger.log(`hangup Platform->${Platform}`);
call.hangup();
}
export function accept() {
logger.log(`accept Platform->${Platform}`);
call.accept();
}
export function startSingleCall(targetId, type, extra) {
logger.log(`startSingleCall targetId->${targetId} type=>${type} extra=>${extra} Platform->${Platform}`);
call.startSingleCall(targetId, type, extra);
}
export 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);
}
export function inviteUsers(userIds, observerUserIds) {
logger.log(`inviteUsers 邀请用户->${userIds} Platform->${Platform}`);
call.inviteUsers(userIds, observerUserIds);
}
export 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);
}
export function enableSpeaker(isOpen) {
logger.log(`enableSpeaker isOPen->${isOpen} Platform->${Platform}`);
call.enableSpeaker(isOpen);
}
export function enableMicrophone(isOpen) {
logger.log(`enableMicrophone isOPen->${isOpen} Platform->${Platform}`);
call.enableMicrophone(isOpen);
}
export function switchCamera() {
logger.log(`switchCamera Platform->${Platform}`);
call.switchCamera();
}
export function currentCamera() {
logger.log(`currentCamera Platform->${Platform}`);
return call.currentCamera();
}
export function enableCamera(isOpen, camera) {
logger.log(`enableCamera isOpen=>${isOpen} camera=>${camera} Platform->${Platform}`);
call.enableCamera(isOpen, camera);
}
export function changeMediaType(type) {
logger.log(`changeMediaType type=>${type} Platform->${Platform}`);
call.changeMediaType(type);
}
export function setAudioConfig(config) {
logger.log(`setAudioConfig config=>${config} Platform->${Platform}`);
call.setAudioConfig(config);
}
export function setVideoConfig(config) {
logger.log(`setVideoConfig config=>${config} Platform->${Platform}`);
call.setVideoConfig(config);
}
export function setPushConfig(config, hangupPushConfig) {
logger.log(`setPushConfig config=>${config} hangupPushConfig=>${hangupPushConfig} Platform->${Platform}`);
call.setPushConfig(config, hangupPushConfig);
}