cdts/xdts-ios 3/TUICalling/Source/TUICalling.h

111 lines
4.4 KiB
C
Raw Permalink Normal View History

2023-07-27 09:20:00 +08:00
//
// TUICalling.h
// TUICalling
//
// Created by noah on 2021/8/28.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSUInteger, TUICallingType) {
TUICallingTypeAudio, // 语音呼叫
TUICallingTypeVideo, // 视频呼叫
};
typedef NS_ENUM(NSUInteger, TUICallingRole) {
TUICallingRoleCall, // 主叫角色
TTUICallingRoleCalled, // 被叫角色
};
typedef NS_ENUM(NSUInteger, TUICallingEvent) {
TUICallingEventCallStart = 200, // 通话开始
TUICallingEventCallEnd = 201, // 通话结束
TUICallingEventCallSucceed = 300, // 接通成功
// 接通失败详细原因见message
// 1、呼叫忙线无人接听
// 2、音视频通道建立失败TRTC进房错误
// 3、其他原因
TUICallingEventCallFailed = 400,
};
typedef void (^TUICallingCallback)(int code, NSString * _Nonnull desc);
NS_ASSUME_NONNULL_BEGIN
@protocol TUICallingListerner <NSObject>
// 收到呼叫时先通过此方法询问是否可以唤起被叫UI.
// 返回为true直接唤起UI。返回为false内部返回忙线
// 不实现默认直接可以唤起UI
- (BOOL)shouldShowOnCallView NS_SWIFT_NAME(shouldShowOnCallView());
/// 呼叫开始回调。主叫、被叫均会触发;
/// 被叫触发时,会将控制器通过监听回调出来,由接入方决定显示方案。
/// @param userIDs 本次通话用户id自己除外
/// @param type 通话类型:视频\音频
/// @param role 通话角色:主叫\被叫
/// @param viewController 提供Calling功能页面给调用方可以让用户在此基础上自定义
- (void)callStart:(NSArray<NSString *> *)userIDs type:(TUICallingType)type role:(TUICallingRole)role viewController:(UIViewController * _Nullable)viewController NS_SWIFT_NAME(callStart(userIDs:type:role:viewController:));
/// 通话结束回调
/// @param userIDs 本次通话用户id自己除外
/// @param type 通话类型:视频\音频
/// @param role 通话角色:主叫\被叫
/// @param totalTime 通话时长
- (void)callEnd:(NSArray<NSString *> *)userIDs type:(TUICallingType)type role:(TUICallingRole)role totalTime:(float)totalTime NS_SWIFT_NAME(callEnd(userIDs:type:role:totalTime:));
/// 通话事件回调
/// @param event 回调事件类型
/// @param type 通话类型:视频\音频
/// @param role 通话角色:主叫\被叫
/// @param message 事件
- (void)onCallEvent:(TUICallingEvent)event type:(TUICallingType)type role:(TUICallingRole)role message:(NSString *)message NS_SWIFT_NAME(onCallEvent(event:type:role:message:));
@end
@interface TUICalling : NSObject
+ (instancetype)shareInstance;
/// +----------------------------+
/// + 通话接口 +
/// +----------------------------+
- (void)call:(NSArray<NSString *> *)userIDs type:(TUICallingType)type NS_SWIFT_NAME(call(userIDs:type:));
/// +----------------------------+
/// + 通话相关设置 +
/// +----------------------------+
- (void)setCallingListener:(id<TUICallingListerner>)listener NS_SWIFT_NAME(setCallingListener(listener:));
/// 设置铃声建议在30s以内只支持本地音频文件
/// @param filePath 音频文件路径
- (void)setCallingBell:(NSString *)filePath NS_SWIFT_NAME(setCallingBell(filePath:));
/// 设置用户昵称
/// @param nickname 用户昵称 (长度不得超过500个字节)
/// @param callback 结果回调 code = 0 代表成功,否则为错误码
- (void)setUserNickname:(NSString *)nickname callback:(TUICallingCallback)callback NS_SWIFT_NAME(setUserNickname(nickname:callback:));
/// 设置用户头像
/// @param avatar 用户头像, 头像必须是URL格式 (长度不得超过500个字节)
/// 例如: https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar1.png
/// @param callback 结果回调 code = 0 代表成功,否则为错误码
- (void)setUserAvatar:(NSString *)avatar callback:(TUICallingCallback)callback NS_SWIFT_NAME(setUserAvatar(avatar:callback:));
/// 开启静音模式(默认关)
- (void)enableMuteMode:(BOOL)enable NS_SWIFT_NAME(enableMuteMode(enable:));
/// 打开悬浮窗(默认关), 注意:用户自定义路由 不支持悬浮窗
- (void)enableFloatWindow:(BOOL)enable NS_SWIFT_NAME(enableFloatWindow(enable:));
/**
*
* onStart回调中ViewController对象
*/
- (void)enableCustomViewRoute:(BOOL)enable NS_SWIFT_NAME(enableCustomViewRoute(enable:));
@end
NS_ASSUME_NONNULL_END