NIMKitConfig.m 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. //
  2. // NIMKitConfig.m
  3. // NIMKit
  4. //
  5. // Created by chris on 2017/10/25.
  6. // Copyright © 2017年 NetEase. All rights reserved.
  7. //
  8. #import "NIMKitConfig.h"
  9. #import "NIMGlobalMacro.h"
  10. #import "NIMMediaItem.h"
  11. #import "UIImage+NIMKit.h"
  12. #import <NIMSDK/NIMSDK.h>
  13. @interface NIMKitSettings()
  14. {
  15. BOOL _isRight;
  16. }
  17. - (instancetype)init:(BOOL)isRight;
  18. @end
  19. @implementation NIMKitConfig
  20. - (instancetype) init
  21. {
  22. self = [super init];
  23. if (self)
  24. {
  25. [self applyDefaultSettings];
  26. }
  27. return self;
  28. }
  29. - (NSArray *)defaultMediaItems
  30. {
  31. return @[[NIMMediaItem item:@"onTapMediaItemPicture:"
  32. normalImage:[UIImage nim_imageInKit:@"bk_media_picture_normal"]
  33. selectedImage:[UIImage nim_imageInKit:@"bk_media_picture_nomal_pressed"]
  34. title:@"相册"],
  35. [NIMMediaItem item:@"onTapMediaItemShoot:"
  36. normalImage:[UIImage nim_imageInKit:@"bk_media_shoot_normal"]
  37. selectedImage:[UIImage nim_imageInKit:@"bk_media_shoot_pressed"]
  38. title:@"拍摄"],
  39. [NIMMediaItem item:@"onTapMediaItemLocation:"
  40. normalImage:[UIImage nim_imageInKit:@"bk_media_position_normal"]
  41. selectedImage:[UIImage nim_imageInKit:@"bk_media_position_pressed"]
  42. title:@"位置"],
  43. ];
  44. }
  45. - (CGFloat)maxNotificationTipPadding{
  46. return 20.f;
  47. }
  48. - (void)applyDefaultSettings
  49. {
  50. _messageInterval = 600;
  51. _messageLimit = 20;
  52. _recordMaxDuration = 60.f;
  53. _placeholder = @"";
  54. _inputMaxLength = 1000;
  55. _nickFont = [UIFont systemFontOfSize:13.0];
  56. _nickColor = [UIColor darkGrayColor];
  57. _receiptFont = LCFont(10.0f);
  58. _receiptColor = LZA3AABEColor;
  59. _sendSuccessFont = LCFont(10.0f);
  60. _sendSuccessColor = LZFF6ADCColor;
  61. _sendFailFont = LCFont(10.0f);
  62. _sendFailColor = HexColorFromRGB(0xFF3B30);
  63. _avatarType = NIMKitAvatarTypeRadiusCorner;//头像圆形
  64. _cellBackgroundColor = LZFAFAFCColor;
  65. _leftBubbleSettings = [[NIMKitSettings alloc] init:NO];
  66. _rightBubbleSettings = [[NIMKitSettings alloc] init:YES];
  67. }
  68. - (NIMKitSetting *)setting:(NIMMessage *)message
  69. {
  70. NIMKitSettings *settings = message.isOutgoingMsg? self.rightBubbleSettings : self.leftBubbleSettings;
  71. switch (message.messageType) {
  72. case NIMMessageTypeText:
  73. return settings.textSetting;
  74. case NIMMessageTypeImage:
  75. return settings.imageSetting;
  76. case NIMMessageTypeLocation:
  77. return settings.locationSetting;
  78. case NIMMessageTypeAudio:
  79. return settings.audioSetting;
  80. case NIMMessageTypeVideo:
  81. return settings.videoSetting;
  82. case NIMMessageTypeFile:
  83. return settings.fileSetting;
  84. case NIMMessageTypeTip:
  85. return settings.tipSetting;
  86. case NIMMessageTypeRobot:
  87. return settings.robotSetting;
  88. case NIMMessageTypeNotification:
  89. {
  90. NIMNotificationObject *object = (NIMNotificationObject *)message.messageObject;
  91. switch (object.notificationType)
  92. {
  93. case NIMNotificationTypeTeam:
  94. return settings.teamNotificationSetting;
  95. case NIMNotificationTypeChatroom:
  96. return settings.chatroomNotificationSetting;
  97. case NIMNotificationTypeNetCall:
  98. return settings.netcallNotificationSetting;
  99. default:
  100. break;
  101. }
  102. break;
  103. }
  104. default:
  105. break;
  106. }
  107. return settings.unsupportSetting;
  108. }
  109. @end
  110. @implementation NIMKitSettings
  111. - (instancetype)init:(BOOL)isRight
  112. {
  113. self = [super init];
  114. if (self)
  115. {
  116. _isRight = isRight;
  117. [self applyDefaultSettings];
  118. }
  119. return self;
  120. }
  121. - (void)applyDefaultSettings
  122. {
  123. [self applyDefaultTextSettings];
  124. [self applyDefaultAudioSettings];
  125. [self applyDefaultVideoSettings];
  126. [self applyDefaultFileSettings];
  127. [self applyDefaultImageSettings];
  128. [self applyDefaultLocationSettings];
  129. [self applyDefaultTipSettings];
  130. [self applyDefaultRobotSettings];
  131. [self applyDefaultUnsupportSettings];
  132. [self applyDefaultTeamNotificationSettings];
  133. [self applyDefaultChatroomNotificationSettings];
  134. [self applyDefaultNetcallNotificationSettings];
  135. }
  136. - (void)applyDefaultTextSettings
  137. {
  138. _textSetting = [[NIMKitSetting alloc] init:_isRight];
  139. _textSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{11,11,9,15}") : UIEdgeInsetsFromString(@"{11,15,9,9}");
  140. _textSetting.textColor = _isRight? [UIColor whiteColor] : LZ273145Color;
  141. _textSetting.font = [UIFont systemFontOfSize:14];
  142. _textSetting.showAvatar = YES;
  143. }
  144. - (void)applyDefaultAudioSettings
  145. {
  146. _audioSetting = [[NIMKitSetting alloc] init:_isRight];
  147. _audioSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{8,12,9,14}") : UIEdgeInsetsFromString(@"{8,13,9,12}");
  148. _audioSetting.textColor = _isRight? [UIColor whiteColor] : LZ273145Color;
  149. _audioSetting.font = [UIFont systemFontOfSize:14];
  150. _audioSetting.showAvatar = YES;
  151. }
  152. - (void)applyDefaultVideoSettings
  153. {
  154. _videoSetting = [[NIMKitSetting alloc] init:_isRight];
  155. _videoSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{3,3,3,8}") : UIEdgeInsetsFromString(@"{3,8,3,3}");
  156. _videoSetting.font = [UIFont systemFontOfSize:14];
  157. _videoSetting.showAvatar = YES;
  158. }
  159. - (void)applyDefaultFileSettings
  160. {
  161. _fileSetting = [[NIMKitSetting alloc] init:_isRight];
  162. _fileSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{3,3,3,8}") : UIEdgeInsetsFromString(@"{3,8,3,3}");
  163. _fileSetting.font = [UIFont systemFontOfSize:14];
  164. _fileSetting.showAvatar = YES;
  165. }
  166. - (void)applyDefaultImageSettings
  167. {
  168. _imageSetting = [[NIMKitSetting alloc] init:_isRight];
  169. _imageSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{3,3,3,8}") : UIEdgeInsetsFromString(@"{3,8,3,3}");
  170. _imageSetting.showAvatar = YES;
  171. }
  172. - (void)applyDefaultLocationSettings
  173. {
  174. _locationSetting = [[NIMKitSetting alloc] init:_isRight];
  175. _locationSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{3,3,3,8}") : UIEdgeInsetsFromString(@"{3,8,3,3}");
  176. _locationSetting.textColor = NIMKit_UIColorFromRGB(0xFFFFFF);
  177. _locationSetting.font = [UIFont systemFontOfSize:12];
  178. _locationSetting.showAvatar = YES;
  179. }
  180. - (void)applyDefaultTipSettings
  181. {
  182. _tipSetting = [[NIMKitSetting alloc] init:_isRight];
  183. _tipSetting.contentInsets = UIEdgeInsetsZero;
  184. _tipSetting.textColor = NIMKit_UIColorFromRGB(0xFFFFFF);
  185. _tipSetting.font = [UIFont systemFontOfSize:10.f];
  186. _tipSetting.showAvatar = NO;
  187. UIImage *backgroundImage = [[UIImage nim_imageInKit:@"icon_session_time_bg"] resizableImageWithCapInsets:UIEdgeInsetsFromString(@"{8,20,8,20}") resizingMode:UIImageResizingModeStretch];;
  188. _tipSetting.normalBackgroundImage = backgroundImage;
  189. _tipSetting.highLightBackgroundImage = backgroundImage;
  190. }
  191. - (void)applyDefaultRobotSettings
  192. {
  193. _robotSetting = [[NIMKitSetting alloc] init:_isRight];
  194. _robotSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{11,11,9,15}") : UIEdgeInsetsFromString(@"{11,15,9,9}");
  195. _robotSetting.textColor = _isRight? NIMKit_UIColorFromRGB(0xFFFFFF) : NIMKit_UIColorFromRGB(0x333333);
  196. _robotSetting.font = [UIFont systemFontOfSize:14];
  197. _robotSetting.showAvatar = YES;
  198. }
  199. - (void)applyDefaultUnsupportSettings
  200. {
  201. _unsupportSetting = [[NIMKitSetting alloc] init:_isRight];
  202. _unsupportSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{11,11,9,15}") : UIEdgeInsetsFromString(@"{11,15,9,9}");
  203. _unsupportSetting.textColor = _isRight? NIMKit_UIColorFromRGB(0xFFFFFF) : NIMKit_UIColorFromRGB(0x333333);
  204. _unsupportSetting.font = [UIFont systemFontOfSize:14];
  205. _unsupportSetting.showAvatar = YES;
  206. }
  207. - (void)applyDefaultTeamNotificationSettings
  208. {
  209. _teamNotificationSetting = [[NIMKitSetting alloc] init:_isRight];
  210. _teamNotificationSetting.contentInsets = UIEdgeInsetsZero;
  211. _teamNotificationSetting.textColor = NIMKit_UIColorFromRGB(0xFFFFFF);
  212. _teamNotificationSetting.font = [UIFont systemFontOfSize:10];
  213. _teamNotificationSetting.showAvatar = NO;
  214. UIImage *backgroundImage = [[UIImage nim_imageInKit:@"icon_session_time_bg"] resizableImageWithCapInsets:UIEdgeInsetsFromString(@"{8,20,8,20}") resizingMode:UIImageResizingModeStretch];
  215. _teamNotificationSetting.normalBackgroundImage = backgroundImage;
  216. _teamNotificationSetting.highLightBackgroundImage = backgroundImage;
  217. }
  218. - (void)applyDefaultChatroomNotificationSettings
  219. {
  220. _chatroomNotificationSetting = [[NIMKitSetting alloc] init:_isRight];
  221. _chatroomNotificationSetting.contentInsets = UIEdgeInsetsZero;
  222. _chatroomNotificationSetting.textColor = NIMKit_UIColorFromRGB(0xFFFFFF);
  223. _chatroomNotificationSetting.font = [UIFont systemFontOfSize:10];
  224. _chatroomNotificationSetting.showAvatar = NO;
  225. UIImage *backgroundImage = [[UIImage nim_imageInKit:@"icon_session_time_bg"] resizableImageWithCapInsets:UIEdgeInsetsFromString(@"{8,20,8,20}") resizingMode:UIImageResizingModeStretch];
  226. _chatroomNotificationSetting.normalBackgroundImage = backgroundImage;
  227. _chatroomNotificationSetting.highLightBackgroundImage = backgroundImage;
  228. }
  229. - (void)applyDefaultNetcallNotificationSettings
  230. {
  231. _netcallNotificationSetting = [[NIMKitSetting alloc] init:_isRight];
  232. _netcallNotificationSetting.contentInsets = _isRight? UIEdgeInsetsFromString(@"{11,11,9,15}") : UIEdgeInsetsFromString(@"{11,15,9,9}");
  233. _netcallNotificationSetting.textColor = _isRight? NIMKit_UIColorFromRGB(0xFFFFFF) : NIMKit_UIColorFromRGB(0x333333);
  234. _netcallNotificationSetting.font = [UIFont systemFontOfSize:14];
  235. _netcallNotificationSetting.showAvatar = YES;
  236. }
  237. @end