123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482 |
- #import <UIKit/UIKit.h>
- FOUNDATION_EXPORT double WFAVEngineKitVersionNumber;
- FOUNDATION_EXPORT const unsigned char WFAVEngineKitVersionString[];
- #import <Foundation/Foundation.h>
- #import <WebRTC/WebRTC.h>
- #import <WFChatClient/WFCChatClient.h>
- @class WFAVCallSession;
- #pragma mark - 通知定义
- extern NSString *kCallStateUpdated;
- #pragma mark - 枚举值定义
- typedef NS_ENUM(NSInteger, WFAVEngineState) {
- kWFAVEngineStateIdle,
- kWFAVEngineStateOutgoing,
- kWFAVEngineStateIncomming,
- kWFAVEngineStateConnecting,
- kWFAVEngineStateConnected
- };
- typedef NS_ENUM(NSInteger, WFAVVideoScalingType) {
- kWFAVVideoScalingTypeAspectFit,
- kWFAVVideoScalingTypeAspectFill,
- kWFAVVideoScalingTypeAspectBalanced,
- kWFAVVideoScalingTypeScaleFill
- };
- typedef NS_ENUM(NSInteger, WFAVVideoProfile) {
- kWFAVVideoProfile120P = 0,
- kWFAVVideoProfile120P_3 = 2,
- kWFAVVideoProfile180P = 10,
- kWFAVVideoProfile180P_3 = 12,
- kWFAVVideoProfile180P_4 = 13,
- kWFAVVideoProfile240P = 20,
- kWFAVVideoProfile240P_3 = 22,
- kWFAVVideoProfile240P_4 = 23,
- kWFAVVideoProfile360P = 30,
- kWFAVVideoProfile360P_3 = 32,
- kWFAVVideoProfile360P_4 = 33,
- kWFAVVideoProfile360P_6 = 35,
- kWFAVVideoProfile360P_7 = 36,
- kWFAVVideoProfile360P_8 = 37,
- kWFAVVideoProfile480P = 40,
- kWFAVVideoProfile480P_3 = 42,
- kWFAVVideoProfile480P_4 = 43,
- kWFAVVideoProfile480P_6 = 45,
- kWFAVVideoProfile480P_8 = 47,
- kWFAVVideoProfile480P_9 = 48,
- kWFAVVideoProfile720P = 50,
- kWFAVVideoProfile720P_3 = 52,
- kWFAVVideoProfile720P_5 = 54,
- kWFAVVideoProfile720P_6 = 55,
- kWFAVVideoProfileDefault = kWFAVVideoProfile360P
- };
- typedef NS_ENUM(NSInteger, WFAVCallEndReason) {
- kWFAVCallEndReasonUnknown = 0,
- kWFAVCallEndReasonBusy,
- kWFAVCallEndReasonSignalError,
- kWFAVCallEndReasonHangup,
- kWFAVCallEndReasonMediaError,
- kWFAVCallEndReasonRemoteHangup,
- kWFAVCallEndReasonOpenCameraFailure,
- kWFAVCallEndReasonTimeout,
- kWFAVCallEndReasonAcceptByOtherClient,
- kWFAVCallEndReasonAllLeft,
- kWFAVCallEndReasonRemoteBusy,
- kWFAVCallEndReasonRemoteTimeout,
- kWFAVCallEndReasonRemoteNetworkError
- };
- #pragma mark - 通话监听
- @protocol WFAVEngineDelegate <NSObject>
- - (void)didReceiveCall:(WFAVCallSession *)session;
- - (void)shouldStartRing:(BOOL)isIncoming;
- - (void)shouldStopRing;
- @end
- @protocol WFAVCallSessionDelegate <NSObject>
- - (void)didChangeState:(WFAVEngineState)state;
- - (void)didParticipantJoined:(NSString *)userId;
- - (void)didParticipantConnected:(NSString *)userId;
- - (void)didParticipantLeft:(NSString *)userId withReason:(WFAVCallEndReason)reason;
- - (void)didCallEndWithReason:(WFAVCallEndReason)reason;
- - (void)didError:(NSError *)error;
- - (void)didChangeMode:(BOOL)isAudioOnly;
- - (void)didGetStats:(NSArray *)stats;
- - (void)didCreateLocalVideoTrack:(RTCVideoTrack *)localVideoTrack;
- - (void)didReceiveRemoteVideoTrack:(RTCVideoTrack *)remoteVideoTrack fromUser:(NSString *)targetId;
- @end
- #pragma mark - 通话引擎
- @interface WFAVEngineKit : NSObject
- + (instancetype)sharedEngineKit;
- @property(nonatomic, assign, readonly)BOOL supportMultiCall;
- @property(nonatomic, assign)int maxAudioCallCount;
- @property(nonatomic, assign)int maxVideoCallCount;
- - (void)addIceServer:(NSString *)address
- userName:(NSString *)userName
- password:(NSString *)password;
- @property(nonatomic, assign) BOOL shouldGetStats;
- @property(nonatomic, weak) id<WFAVEngineDelegate> delegate;
- @property(nonatomic, strong, readonly) WFAVCallSession *currentSession;
- - (WFAVCallSession *)startCall:(NSArray<NSString *> *)targetIds
- audioOnly:(BOOL)audioOnly
- conversation:(WFCCConversation *)conversation
- sessionDelegate:(id<WFAVCallSessionDelegate>)sessionDelegate;
- - (void)startPreview;
- - (void)setVideoProfile:(WFAVVideoProfile)videoProfile swapWidthHeight:(BOOL)swapWidthHeight;
- - (void)presentViewController:(UIViewController *)viewController;
- - (void)dismissViewController:(UIViewController *)viewController;
- @end
- @interface WFAVParticipantProfile : NSObject
- @property(nonatomic, strong, readonly)NSString *userId;
- @property(nonatomic, assign, readonly)long long startTime;
- @property(nonatomic, assign, readonly)WFAVEngineState state;
- @property(nonatomic, assign, readonly)BOOL videoMuted;
- @end
- #pragma mark - 通话Session
- @interface WFAVCallSession : NSObject
- @property(nonatomic, strong, readonly) NSString *callId;
- @property(nonatomic, strong, readonly) NSString *clientId;
- @property(nonatomic, weak)id<WFAVCallSessionDelegate> delegate;
- @property(nonatomic, assign, readonly) WFAVEngineState state;
- @property(nonatomic, assign, readonly) long long startTime;
- @property(nonatomic, assign, readonly) long long connectedTime;
- @property(nonatomic, assign, readonly) long long endTime;
- @property(nonatomic, strong, readonly) WFCCConversation *conversation;
- @property(nonatomic, assign, getter=isAudioOnly) BOOL audioOnly;
- @property(nonatomic, assign, readonly)WFAVCallEndReason endReason;
- @property(nonatomic, assign, getter=isSpeaker, readonly)BOOL speaker;
- @property(nonatomic, assign, readonly)NSArray<NSString *> *participantIds;
- @property(nonatomic, assign, readonly)NSString *initiator;
- - (BOOL)isParticipant:(NSString *)userId;
- @property(nonatomic, assign, readonly) NSArray<WFAVParticipantProfile *> *participants;
- @property(nonatomic, assign, readonly) WFAVParticipantProfile *myProfile;
- - (void)inviteNewParticipants:(NSArray<NSString *>*)targetIds;
- @property(nonatomic, assign, getter=isVideoMuted, readonly) BOOL videoMuted;
- @property(nonatomic, assign, getter=isAudioMuted, readonly) BOOL audioMuted;
- - (void)answerCall:(BOOL)audioOnly;
- - (void)endCall;
- - (BOOL)muteAudio:(BOOL)muted;
- - (BOOL)enableSpeaker:(BOOL)speaker;
- - (BOOL)muteVideo:(BOOL)muted;
- - (void)switchCamera;
- - (void)setupLocalVideoView:(UIView *)videoContainerView scalingType:(WFAVVideoScalingType)scalingType;
- - (void)setupRemoteVideoView:(UIView *)videoContainerView scalingType:(WFAVVideoScalingType)scalingType forUser:(NSString *)targetId;
- @end
|