NTESSessionConfig.m 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. //
  2. // NTESSessionConfig.m
  3. // NIM
  4. //
  5. // Created by amao on 8/11/15.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import "NTESSessionConfig.h"
  9. #import "NIMMediaItem.h"
  10. #import "NTESBundleSetting.h"
  11. #import "NTESSnapchatAttachment.h"
  12. #import "NTESWhiteboardAttachment.h"
  13. #import "NTESBundleSetting.h"
  14. #import "NSString+NTES.h"
  15. #import "NIMSessionConfig.h"
  16. @interface NTESSessionConfig()
  17. @end
  18. @implementation NTESSessionConfig
  19. - (NSArray *)mediaItems
  20. {
  21. NSArray *defaultMediaItems = [NIMKit sharedKit].config.defaultMediaItems;
  22. NIMMediaItem *janKenPon = [NIMMediaItem item:@"onTapMediaItemJanKenPon:"
  23. normalImage:[UIImage imageNamed:@"icon_jankenpon_normal"]
  24. selectedImage:[UIImage imageNamed:@"icon_jankenpon_pressed"]
  25. title:@"石头剪刀布"];
  26. NIMMediaItem *fileTrans = [NIMMediaItem item:@"onTapMediaItemFileTrans:"
  27. normalImage:[UIImage imageNamed:@"icon_file_trans_normal"]
  28. selectedImage:[UIImage imageNamed:@"icon_file_trans_pressed"]
  29. title:@"文件传输"];
  30. NIMMediaItem *tip = [NIMMediaItem item:@"onTapMediaItemTip:"
  31. normalImage:[UIImage imageNamed:@"bk_media_tip_normal"]
  32. selectedImage:[UIImage imageNamed:@"bk_media_tip_pressed"]
  33. title:@"提示消息"];
  34. NIMMediaItem *audioChat = [NIMMediaItem item:@"onTapMediaItemAudioChat:"
  35. normalImage:[UIImage imageNamed:@"btn_media_telphone_message_normal"]
  36. selectedImage:[UIImage imageNamed:@"btn_media_telphone_message_pressed"]
  37. title:@"实时语音"];
  38. NIMMediaItem *videoChat = [NIMMediaItem item:@"onTapMediaItemVideoChat:"
  39. normalImage:[UIImage imageNamed:@"btn_bk_media_video_chat_normal"]
  40. selectedImage:[UIImage imageNamed:@"btn_bk_media_video_chat_pressed"]
  41. title:@"视频聊天"];
  42. NIMMediaItem *teamMeeting = [NIMMediaItem item:@"onTapMediaItemTeamMeeting:"
  43. normalImage:[UIImage imageNamed:@"btn_media_telphone_message_normal"]
  44. selectedImage:[UIImage imageNamed:@"btn_media_telphone_message_pressed"]
  45. title:@"视频通话"];
  46. NIMMediaItem *snapChat = [NIMMediaItem item:@"onTapMediaItemSnapChat:"
  47. normalImage:[UIImage imageNamed:@"bk_media_snap_normal"]
  48. selectedImage:[UIImage imageNamed:@"bk_media_snap_pressed"]
  49. title:@"阅后即焚"];
  50. NIMMediaItem *whiteBoard = [NIMMediaItem item:@"onTapMediaItemWhiteBoard:"
  51. normalImage:[UIImage imageNamed:@"btn_whiteboard_invite_normal"]
  52. selectedImage:[UIImage imageNamed:@"btn_whiteboard_invite_pressed"]
  53. title:@"白板"];
  54. NIMMediaItem *redPacket = [NIMMediaItem item:@"onTapMediaItemRedPacket:"
  55. normalImage:[UIImage imageNamed:@"icon_redpacket_normal"]
  56. selectedImage:[UIImage imageNamed:@"icon_redpacket_pressed"]
  57. title:@"红包"];
  58. NIMMediaItem *teamReceipt = [NIMMediaItem item:@"onTapMediaItemTeamReceipt:"
  59. normalImage:[UIImage imageNamed:@"icon_team_receipt_normal"]
  60. selectedImage:[UIImage imageNamed:@"icon_team_receipt_pressed"]
  61. title:@"已读回执"];
  62. BOOL isMe = _session.sessionType == NIMSessionTypeP2P
  63. && [_session.sessionId isEqualToString:[[NIMSDK sharedSDK].loginManager currentAccount]];
  64. NSArray *items = @[];
  65. if (isMe)
  66. {
  67. items = @[janKenPon,fileTrans,tip];
  68. }
  69. else if(_session.sessionType == NIMSessionTypeTeam)
  70. {
  71. items = @[janKenPon,teamMeeting,fileTrans,tip,teamReceipt,redPacket];
  72. }
  73. else
  74. {
  75. items = @[janKenPon,audioChat,videoChat,fileTrans,snapChat,whiteBoard,tip,redPacket];
  76. }
  77. return [defaultMediaItems arrayByAddingObjectsFromArray:items];
  78. }
  79. - (BOOL)shouldHandleReceipt{
  80. return YES;
  81. }
  82. - (NSArray<NSNumber *> *)inputBarItemTypes{
  83. if (self.session.sessionType == NIMSessionTypeP2P && [[NIMSDK sharedSDK].robotManager isValidRobot:self.session.sessionId])
  84. {
  85. //和机器人 点对点 聊天
  86. return @[
  87. @(NIMInputBarItemTypeTextAndRecord),
  88. ];
  89. }
  90. return @[
  91. @(NIMInputBarItemTypeVoice),
  92. @(NIMInputBarItemTypeTextAndRecord),
  93. @(NIMInputBarItemTypeEmoticon),
  94. @(NIMInputBarItemTypeMore)
  95. ];
  96. }
  97. - (BOOL)shouldHandleReceiptForMessage:(NIMMessage *)message
  98. {
  99. //文字,语音,图片,视频,文件,地址位置和自定义消息都支持已读回执,其他的不支持
  100. NIMMessageType type = message.messageType;
  101. if (type == NIMMessageTypeCustom) {
  102. NIMCustomObject *object = (NIMCustomObject *)message.messageObject;
  103. id attachment = object.attachment;
  104. if ([attachment isKindOfClass:[NTESWhiteboardAttachment class]]) {
  105. return NO;
  106. }
  107. }
  108. return type == NIMMessageTypeText ||
  109. type == NIMMessageTypeAudio ||
  110. type == NIMMessageTypeImage ||
  111. type == NIMMessageTypeVideo ||
  112. type == NIMMessageTypeFile ||
  113. type == NIMMessageTypeLocation ||
  114. type == NIMMessageTypeCustom;
  115. }
  116. - (NSArray<NIMInputEmoticonCatalog *> *)charlets
  117. {
  118. return [self loadChartletEmoticonCatalog];
  119. }
  120. - (BOOL)disableProximityMonitor{
  121. return [[NTESBundleSetting sharedConfig] disableProximityMonitor];
  122. }
  123. - (NIMAudioType)recordType
  124. {
  125. return [[NTESBundleSetting sharedConfig] usingAmr] ? NIMAudioTypeAMR : NIMAudioTypeAAC;
  126. }
  127. - (NSArray *)loadChartletEmoticonCatalog{
  128. NSURL *url = [[NSBundle mainBundle] URLForResource:@"NIMDemoChartlet.bundle"
  129. withExtension:nil];
  130. NSBundle *bundle = [NSBundle bundleWithURL:url];
  131. NSArray *paths = [bundle pathsForResourcesOfType:nil inDirectory:@""];
  132. NSMutableArray *res = [[NSMutableArray alloc] init];
  133. for (NSString *path in paths) {
  134. BOOL isDirectory = NO;
  135. if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory] && isDirectory) {
  136. NIMInputEmoticonCatalog *catalog = [[NIMInputEmoticonCatalog alloc]init];
  137. catalog.catalogID = path.lastPathComponent;
  138. NSArray *resources = [NSBundle pathsForResourcesOfType:nil inDirectory:[path stringByAppendingPathComponent:@"content"]];
  139. NSMutableArray *array = [[NSMutableArray alloc] init];
  140. for (NSString *path in resources) {
  141. NSString *name = path.lastPathComponent.stringByDeletingPathExtension;
  142. NIMInputEmoticon *icon = [[NIMInputEmoticon alloc] init];
  143. icon.emoticonID = name.stringByDeletingPictureResolution;
  144. icon.filename = path;
  145. [array addObject:icon];
  146. }
  147. catalog.emoticons = array;
  148. NSArray *icons = [NSBundle pathsForResourcesOfType:nil inDirectory:[path stringByAppendingPathComponent:@"icon"]];
  149. for (NSString *path in icons) {
  150. NSString *name = path.lastPathComponent.stringByDeletingPathExtension.stringByDeletingPictureResolution;
  151. if ([name hasSuffix:@"normal"]) {
  152. catalog.icon = path;
  153. }else if([name hasSuffix:@"highlighted"]){
  154. catalog.iconPressed = path;
  155. }
  156. }
  157. [res addObject:catalog];
  158. }
  159. }
  160. return res;
  161. }
  162. @end