cdts/xdts-ios 3/TUICalling/Source/TUICalling.h
2023-07-27 09:20:00 +08:00

111 lines
4.4 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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