NTESSessionConfig.m 8.2 KB

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