TIMUserProfile+IMUserAble.m 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. //
  2. // TIMUserProfile+IMUserAble.m
  3. // TCShow
  4. //
  5. // Created by AlexiChen on 16/4/15.
  6. // Copyright © 2016年 AlexiChen. All rights reserved.
  7. //
  8. #import "TIMUserProfile+IMUserAble.h"
  9. @implementation TIMUserProfile (IMUserAble)
  10. // 两个用户是否相同,可通过比较imUserId来判断
  11. // 用户IMSDK的identigier
  12. - (NSString *)imUserId
  13. {
  14. return self.identifier;
  15. }
  16. // 用户昵称
  17. - (NSString *)imUserName
  18. {
  19. return self.nickname.length > 0 ? self.nickname : self.identifier;
  20. }
  21. // 用户头像地址
  22. - (NSString *)imUserIconUrl
  23. {
  24. return [NSString isEmpty:self.faceURL] ? nil : self.faceURL;
  25. }
  26. - (BOOL)isEqual:(id)object
  27. {
  28. BOOL isEqual = [super isEqual:object];
  29. if (!isEqual)
  30. {
  31. if ([object conformsToProtocol:@protocol(IMUserAble)])
  32. {
  33. id<IMUserAble> io = (id<IMUserAble>)object;
  34. isEqual = [[self imUserId] isEqualToString:[io imUserId]];
  35. }
  36. }
  37. return isEqual;
  38. }
  39. static NSString *const kTIMUserProfileAVMultiUserState = @"kTIMUserProfileAVMultiUserState";
  40. static NSString *const kTIMUserProfileAVInteractArea = @"kTIMUserProfileAVInteractArea";
  41. static NSString *const kTIMUserProfileAVInvisibleInteractView = @"kTIMUserProfileAVInvisibleInteractView";
  42. static NSString *const kTIMUserProfileAVCtrlState = @"kTIMUserProfileAVCtrlState";
  43. - (NSInteger)avCtrlState
  44. {
  45. NSNumber *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVCtrlState);
  46. return [num integerValue];
  47. }
  48. - (void)setAvCtrlState:(NSInteger)avCtrlState
  49. {
  50. objc_setAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVCtrlState, @(avCtrlState), OBJC_ASSOCIATION_RETAIN);
  51. }
  52. - (NSInteger)avMultiUserState
  53. {
  54. NSNumber *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVMultiUserState);
  55. return [num integerValue];
  56. }
  57. - (void)setAvMultiUserState:(NSInteger)avMultiUserState
  58. {
  59. objc_setAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVMultiUserState, @(avMultiUserState), OBJC_ASSOCIATION_RETAIN);
  60. }
  61. - (CGRect)avInteractArea
  62. {
  63. NSValue *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVInteractArea);
  64. return [num CGRectValue];
  65. }
  66. - (void)setAvInteractArea:(CGRect)avInteractArea
  67. {
  68. objc_setAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVInteractArea, [NSValue valueWithCGRect:avInteractArea], OBJC_ASSOCIATION_RETAIN);
  69. }
  70. - (UIView *)avInvisibleInteractView
  71. {
  72. return objc_getAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVInvisibleInteractView);
  73. }
  74. - (void)setAvInvisibleInteractView:(UIView *)avInvisibleInteractView
  75. {
  76. objc_setAssociatedObject(self, (__bridge const void *)kTIMUserProfileAVInvisibleInteractView, avInvisibleInteractView, OBJC_ASSOCIATION_ASSIGN);
  77. }
  78. @end
  79. @implementation TIMGroupMemberInfo (IMUserAble)
  80. // 两个用户是否相同,可通过比较imUserId来判断
  81. // 用户IMSDK的identigier
  82. - (NSString *)imUserId
  83. {
  84. return self.member;
  85. }
  86. // 用户昵称
  87. - (NSString *)imUserName
  88. {
  89. return self.nameCard.length > 0 ? self.nameCard : self.member;
  90. }
  91. // 用户头像地址
  92. - (NSString *)imUserIconUrl
  93. {
  94. return nil;
  95. }
  96. - (BOOL)isEqual:(id)object
  97. {
  98. BOOL isEqual = [super isEqual:object];
  99. if (!isEqual)
  100. {
  101. if ([object conformsToProtocol:@protocol(IMUserAble)])
  102. {
  103. id<IMUserAble> io = (id<IMUserAble>)object;
  104. isEqual = [[self imUserId] isEqualToString:[io imUserId]];
  105. }
  106. }
  107. return isEqual;
  108. }
  109. static NSString *const kTIMGroupMemberInfoAVMultiUserState = @"kTIMGroupMemberInfoAVMultiUserState";
  110. static NSString *const kTIMGroupMemberInfoAVInteractArea = @"kTIMGroupMemberInfoAVInteractArea";
  111. static NSString *const kTIMGroupMemberInfoAVInvisibleInteractView = @"kTIMGroupMemberInfoAVInvisibleInteractView";
  112. static NSString *const kTIMGroupMemberInfoAVCtrlState = @"kTIMGroupMemberInfoAVCtrlState";
  113. - (NSInteger)avCtrlState
  114. {
  115. NSNumber *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVMultiUserState);
  116. return [num integerValue];
  117. }
  118. - (void)setAvCtrlState:(NSInteger)avCtrlState
  119. {
  120. objc_setAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVMultiUserState, @(avCtrlState), OBJC_ASSOCIATION_RETAIN);
  121. }
  122. - (NSInteger)avMultiUserState
  123. {
  124. NSNumber *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVMultiUserState);
  125. return [num integerValue];
  126. }
  127. - (void)setAvMultiUserState:(NSInteger)avMultiUserState
  128. {
  129. objc_setAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVMultiUserState, @(avMultiUserState), OBJC_ASSOCIATION_RETAIN);
  130. }
  131. - (CGRect)avInteractArea
  132. {
  133. NSValue *num = objc_getAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVInteractArea);
  134. return [num CGRectValue];
  135. }
  136. - (void)setAvInteractArea:(CGRect)avInteractArea
  137. {
  138. objc_setAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVInteractArea, [NSValue valueWithCGRect:avInteractArea], OBJC_ASSOCIATION_RETAIN);
  139. }
  140. - (UIView *)avInvisibleInteractView
  141. {
  142. return objc_getAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVInvisibleInteractView);
  143. }
  144. - (void)setAvInvisibleInteractView:(UIView *)avInvisibleInteractView
  145. {
  146. objc_setAssociatedObject(self, (__bridge const void *)kTIMGroupMemberInfoAVInvisibleInteractView, avInvisibleInteractView, OBJC_ASSOCIATION_ASSIGN);
  147. }
  148. @end