diff --git a/plugin.xml b/plugin.xml index 17e1a61..13e768b 100644 --- a/plugin.xml +++ b/plugin.xml @@ -44,12 +44,16 @@ + + + + - - + + @@ -64,7 +68,7 @@ - + diff --git a/src/ios/Events.m b/src/ios/Events.m index 577e683..8eac1bd 100644 --- a/src/ios/Events.m +++ b/src/ios/Events.m @@ -13,7 +13,7 @@ @implementation Events static NSString* PREFIX = @"com.tencent.trtc.event"; -static NSDictionary *events = nil; +static NSDictionary*> *events = nil; + (void)fireEvent: (NSString*)event{ [Events fireEvent: nil]; @@ -21,7 +21,7 @@ static NSDictionary *events = nil; + (void)fireEvent: (NSString*)event extra:(NSDictionary*)extra{ [Events init]; NSLog(@"TRTC - Events::fireEvent --- event:%@,extra:%@",event,extra); - NSMutableArray* listeners = [self getEventListener:event]; + NSMutableOrderedSet* listeners = [self getEventListener:event]; if(listeners != nil && listeners.count > 0 ){ for (Listener* listener in listeners) { NSLog(@"TRTC - Events::fireEvent --- event:%@,listener:%@",event,listener); @@ -32,7 +32,7 @@ static NSDictionary *events = nil; + (void)addListener: (NSString*)event listener:(Listener*)listener{ [Events init]; NSLog(@"TRTC - Events::addListener --- event:%@,listener:%@",event,listener); - NSMutableArray* listeners = [self getEventListener:event]; + NSMutableOrderedSet* listeners = [self getEventListener:event]; if(![listeners containsObject:listener]){ [listeners addObject:listener]; } @@ -40,7 +40,7 @@ static NSDictionary *events = nil; + (void)removeListener: (NSString*)event listener:(Listener*)listener{ [Events init]; NSLog(@"TRTC - Events::removeListener --- event:%@,listener:%@",event,listener); - NSMutableArray* listeners = [self getEventListener:event]; + NSMutableOrderedSet* listeners = [self getEventListener:event]; if([listeners containsObject:listener]){ [listeners removeObject:listener]; } @@ -48,15 +48,13 @@ static NSDictionary *events = nil; + (void)init{ if( events == nil){ - events = [NSDictionary new]; + NSMutableOrderedSet* listeners = [[NSMutableOrderedSet alloc] init]; + events = [[NSDictionary alloc] initWithObjectsAndKeys:listeners,@"com.tencent.trtc.eventuserinfo.update", nil]; } } -+ (NSMutableArray*) getEventListener: (NSString*)event{ ++ (NSMutableOrderedSet*) getEventListener: (NSString*)event{ + [Events init]; NSString* key = [[NSString alloc] initWithFormat:@"%@%@", PREFIX, event ]; - if([events objectForKey:key] == nil){ - NSMutableArray* listeners = [NSMutableArray array]; - [events setValue:listeners forKey:key]; - } - return [events objectForKey:key]; + return [events valueForKey:key]; } @end diff --git a/src/ios/Listener.h b/src/ios/Listener.h index 66c1b2b..9ce0c35 100644 --- a/src/ios/Listener.h +++ b/src/ios/Listener.h @@ -9,7 +9,7 @@ #define Listener_h #endif /* Listener_h */ -@interface Listener +@interface Listener:NSObject {} - (instancetype)init; - (void)on: (NSDictionary*)extra; diff --git a/src/ios/Listener.m b/src/ios/Listener.m new file mode 100644 index 0000000..6264930 --- /dev/null +++ b/src/ios/Listener.m @@ -0,0 +1,21 @@ +// +// Listener.m +// shuto-cne +// +// Created by 范大德 on 2022/3/30. +// + +#import +#import "Listener.h" +@interface Listener() +{} +- (instancetype)init; +- (void)on: (NSDictionary*)extra; +@end + +@implementation Listener +- (instancetype)init{ + return self; +} +- (void)on: (NSDictionary*)extra{} +@end diff --git a/src/ios/TrtcUserInfo.h b/src/ios/TrtcUserInfo.h new file mode 100644 index 0000000..2bb8371 --- /dev/null +++ b/src/ios/TrtcUserInfo.h @@ -0,0 +1,31 @@ +// +// TrtcUserInfo.h +// shuto-cne +// +// Created by 范大德 on 2022/3/30. +// + +#ifndef TrtcUserInfo_h +#define TrtcUserInfo_h + + +#endif /* TrtcUserInfo_h */ +@interface TrtcUserInfo: NSObject +{} +// 自定义类的初始化方法 + +// 过去类型instancetype 是 id 类型 + +- (instancetype)initWithPersonid:(NSString *)personid; + +- (NSString*) personid; +-(NSString *)displayName; + +-(BOOL)isShareUser; + +-(BOOL)isLocalUser; + +-(void)setLocal:(BOOL) value; +-(void)setDisplayName:(NSString *)value; + +@end diff --git a/src/ios/TrtcUserInfo.m b/src/ios/TrtcUserInfo.m index f5879cb..5bb1c32 100644 --- a/src/ios/TrtcUserInfo.m +++ b/src/ios/TrtcUserInfo.m @@ -6,22 +6,13 @@ // #import -@interface TrtcUserInfo : NSObject +#import "TrtcUserInfo.h" +@interface TrtcUserInfo() { NSString* personid; NSString* displayName; BOOL local; } - - - -// 自定义类的初始化方法 - -// 过去类型instancetype 是 id 类型 - -- (instancetype)initWithPersonid:(NSString *)personid; - -- (NSString*) personid; @end @implementation TrtcUserInfo diff --git a/src/ios/Toast/UIView+Toast.h b/src/ios/UIView+Toast.h similarity index 100% rename from src/ios/Toast/UIView+Toast.h rename to src/ios/UIView+Toast.h diff --git a/src/ios/Toast/UIView+Toast.m b/src/ios/UIView+Toast.m similarity index 100% rename from src/ios/Toast/UIView+Toast.m rename to src/ios/UIView+Toast.m diff --git a/src/ios/UserUpdateListener.h b/src/ios/UserUpdateListener.h new file mode 100644 index 0000000..29e08cb --- /dev/null +++ b/src/ios/UserUpdateListener.h @@ -0,0 +1,18 @@ +// +// UserUpdateListener.h +// shuto-cne +// +// Created by 范大德 on 2022/3/30. +// + +#ifndef UserUpdateListener_h +#define UserUpdateListener_h + + +#endif /* UserUpdateListener_h */ + +#import "Listener.h" + +@interface UserUpdateListener:Listener +{} +@end diff --git a/src/ios/UserUpdateListener.m b/src/ios/UserUpdateListener.m index a5502d4..ca1afd7 100644 --- a/src/ios/UserUpdateListener.m +++ b/src/ios/UserUpdateListener.m @@ -5,11 +5,9 @@ // Created by 范大德 on 2022/3/29. // -#import -#import "Listener.h" -#import "TrtcUserInfo.m" +#import "UserUpdateListener.h" #import "VideoCallingViewController.h" -@interface UserUpdateListener : Listener +@interface UserUpdateListener() {} @end @implementation UserUpdateListener @@ -20,16 +18,7 @@ -(void)on: (NSDictionary*)extra{ - NSLog(@"TRTC - userinfo.update -- userID:%@,displayname:%@",extra[@"userId"],extra[@"displayName"]); - TrtcUserInfo *user = [[TrtcUserInfo alloc] initWithPersonid:extra[@"userId"]]; - NSInteger index = [[[VideoCallingViewController viewController] remoteUidSet] indexOfObject: user]; - NSLog(@"TRTC - userinfo.update -- userId:%@,index:%ld",extra[@"userId"],index); - if (index != NSNotFound) { return; } - TrtcUserInfo *obj = [[VideoCallingViewController viewController] remoteUidSet][index]; - [obj setDisplayName: extra[@"displayName"]]; - dispatch_async(dispatch_get_main_queue(), ^{ - [[VideoCallingViewController viewController] refreshRemoteVideoViews]; - }); + [[VideoCallingViewController viewController]updateUser:extra]; } @end diff --git a/src/ios/VideoCallingViewController.h b/src/ios/VideoCallingViewController.h index 2859204..be85877 100755 --- a/src/ios/VideoCallingViewController.h +++ b/src/ios/VideoCallingViewController.h @@ -6,7 +6,6 @@ // #import -//#import "TrtcOptions.h" #import @@ -18,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSMutableOrderedSet *)remoteUidSet; +(VideoCallingViewController*)viewController; - (void)refreshRemoteVideoViews; +- (void) updateUser:(NSDictionary*)extra; @end NS_ASSUME_NONNULL_END diff --git a/src/ios/VideoCallingViewController.m b/src/ios/VideoCallingViewController.m index 967036b..636393d 100755 --- a/src/ios/VideoCallingViewController.m +++ b/src/ios/VideoCallingViewController.m @@ -30,11 +30,11 @@ Real-Time Audio Call #import "VideoCallingViewController.h" -#import "TrtcUserInfo.m" +#import "TrtcUserInfo.h" #import "CordovaEventKit.h" -#import "Toast/UIView+Toast.h" +#import "UIView+Toast.h" #import "Events.h" -#import "UserUpdateListener.m" +#import "UserUpdateListener.h" static const NSInteger maxRemoteUserNum = 7; @@ -103,6 +103,19 @@ static const NSInteger maxRemoteUserNum = 7; return self; } +- (void) updateUser:(NSDictionary*)extra{ + NSLog(@"TRTC - userinfo.update -- userID:%@,displayname:%@",extra[@"userId"],extra[@"displayName"]); + TrtcUserInfo *user = [[TrtcUserInfo alloc]initWithPersonid:extra[@"userId"]]; + NSInteger index = [[self remoteUidSet] indexOfObject: user]; + NSLog(@"TRTC - userinfo.update -- userId:%@,index:%ld",extra[@"userId"],index); + if (index != NSNotFound) { return; } + TrtcUserInfo *obj = [self remoteUidSet][index]; + [obj setDisplayName: extra[@"displayName"]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self refreshRemoteVideoViews]; + }); +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -119,7 +132,7 @@ static const NSInteger maxRemoteUserNum = 7; _displayLabel.text = @"我"; _displayLabel.hidden = NO; _rotation = 0; - [Events addListener:@"userinfo.update" listener: [UserUpdateListener init] ]; + [Events addListener:@"userinfo.update" listener: [[UserUpdateListener alloc] init] ]; } diff --git a/src/ios/VideoCallingViewController.xib b/src/ios/VideoCallingViewController.xib index 02ff771..0fc2fa8 100755 --- a/src/ios/VideoCallingViewController.xib +++ b/src/ios/VideoCallingViewController.xib @@ -1,29 +1,31 @@ - + - + - - - - - - - + + + + + + + + + @@ -33,6 +35,16 @@ + + + @@ -41,6 +53,16 @@ + + + @@ -49,6 +71,16 @@ + + + @@ -57,6 +89,16 @@ + + + @@ -65,6 +107,16 @@ + + + @@ -73,92 +125,122 @@ + + + - @@ -166,34 +248,32 @@ + - - - - - + - - - - - + + - - - + - - - + + + + + + + + +