消息模块-发送图片查看图片

This commit is contained in:
fengshuo
2022-04-21 17:11:05 +08:00
parent 27de34b0d5
commit bbca6afefc
4 changed files with 66 additions and 4 deletions

View File

@@ -61,6 +61,7 @@ target 'xplan-ios' do
#vap礼物动画 #vap礼物动画
pod 'QGVAPlayer' pod 'QGVAPlayer'
pod 'IQKeyboardManager', '~> 6.5.5' pod 'IQKeyboardManager', '~> 6.5.5'
pod 'TZImagePickerController'
#调试 #调试
pod 'LookinServer', :configurations => ['Debug'] pod 'LookinServer', :configurations => ['Debug']

View File

@@ -74,6 +74,7 @@ PODS:
- Protobuf (~> 3.4) - Protobuf (~> 3.4)
- SZTextView (1.3.0) - SZTextView (1.3.0)
- TXLiteAVSDK_TRTC (8.7.10102) - TXLiteAVSDK_TRTC (8.7.10102)
- TZImagePickerController (3.8.1)
- UMCommon (7.3.5): - UMCommon (7.3.5):
- UMDevice - UMDevice
- UMDevice (2.0.5) - UMDevice (2.0.5)
@@ -119,6 +120,7 @@ DEPENDENCIES:
- SVGAPlayer (~> 2.3) - SVGAPlayer (~> 2.3)
- SZTextView - SZTextView
- TXLiteAVSDK_TRTC (from `http://pod-1252463788.cosgz.myqcloud.com/liteavsdkspec/TXLiteAVSDK_TRTC.podspec`) - TXLiteAVSDK_TRTC (from `http://pod-1252463788.cosgz.myqcloud.com/liteavsdkspec/TXLiteAVSDK_TRTC.podspec`)
- TZImagePickerController
- UMCommon - UMCommon
- UMDevice - UMDevice
- YYText - YYText
@@ -131,6 +133,7 @@ SPEC REPOS:
- NTESBaseComponent - NTESBaseComponent
- NTESQuickPass - NTESQuickPass
- QGVAPlayer - QGVAPlayer
- TZImagePickerController
trunk: trunk:
- AFNetworking - AFNetworking
- AgoraRtcEngine_iOS - AgoraRtcEngine_iOS
@@ -204,6 +207,7 @@ SPEC CHECKSUMS:
SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86 SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86
SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1 SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1
TXLiteAVSDK_TRTC: e78365f430926a1064e175fd8d97601559e7d3d1 TXLiteAVSDK_TRTC: e78365f430926a1064e175fd8d97601559e7d3d1
TZImagePickerController: 943511626019431372cf908f24c114521e484f0e
UMCommon: ab4d875ddefe1b06c60b577e4a58bc4d433ee067 UMCommon: ab4d875ddefe1b06c60b577e4a58bc4d433ee067
UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0 UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0
YYCache: 8105b6638f5e849296c71f331ff83891a4942952 YYCache: 8105b6638f5e849296c71f331ff83891a4942952
@@ -211,6 +215,6 @@ SPEC CHECKSUMS:
YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 YYText: 5c461d709e24d55a182d1441c41dc639a18a4849
YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928 YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928
PODFILE CHECKSUM: 5f8d1ca73148363e1d2c4871b0136f5edc0ee8e5 PODFILE CHECKSUM: f2682cf01b67e68f847979b09786b508a737bed6
COCOAPODS: 1.11.2 COCOAPODS: 1.11.2

View File

@@ -7,16 +7,17 @@
#import "MessageContentImage.h" #import "MessageContentImage.h"
#import "NetImageView.h" #import "NetImageView.h"
#import "SDPhotoBrowser.h"
#import <NIMSDK/NIMSDK.h> #import <NIMSDK/NIMSDK.h>
#import <Masonry/Masonry.h> #import <Masonry/Masonry.h>
#define MESSAGE_IMAGE_PADDING 10 #define MESSAGE_IMAGE_PADDING 10
#define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX / 3 * 2) #define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX / 3 * 2)
@interface MessageContentImage() @interface MessageContentImage()<SDPhotoBrowserDelegate>
@property (nonatomic, strong) NetImageView * messageImage; @property (nonatomic, strong) NetImageView * messageImage;
@property (nonatomic,strong) NIMImageObject *imageObject;
@end @end
@@ -56,6 +57,7 @@
[[NIMSDK sharedSDK].chatManager fetchMessageAttachment:message error:nil]; [[NIMSDK sharedSDK].chatManager fetchMessageAttachment:message error:nil];
} else { } else {
NIMImageObject * imageObject = (NIMImageObject*) message.messageObject; NIMImageObject * imageObject = (NIMImageObject*) message.messageObject;
self.imageObject = imageObject;
NSData *imageData = [[NSData alloc] initWithContentsOfFile:imageObject.thumbPath]; NSData *imageData = [[NSData alloc] initWithContentsOfFile:imageObject.thumbPath];
image = [UIImage imageWithData:imageData scale:[UIScreen mainScreen].scale]; image = [UIImage imageWithData:imageData scale:[UIScreen mainScreen].scale];
@@ -76,9 +78,32 @@
} }
} }
#pragma mark - SDPhotoBrowserDelegate
- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index {
return [NSURL URLWithString:self.imageObject.url];
}
- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index {
return [UIImageConstant defalutBannerPlaceholder];
}
- (void)didTapImage {
SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init];
browser.sourceImagesContainerView = self;
browser.delegate = self;
browser.imageCount = 1;
browser.currentImageIndex = 0;
browser.isMe = NO;
[browser show];
}
- (NetImageView *)messageImage { - (NetImageView *)messageImage {
if (!_messageImage) { if (!_messageImage) {
_messageImage = [[NetImageView alloc] init]; _messageImage = [[NetImageView alloc] init];
_messageImage.userInteractionEnabled = YES;
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapImage)];
[_messageImage addGestureRecognizer:tap];
} }
return _messageImage; return _messageImage;
} }

View File

@@ -8,11 +8,13 @@
#import "SessionViewController.h" #import "SessionViewController.h"
#import <Masonry/Masonry.h> #import <Masonry/Masonry.h>
#import <IQKeyboardManager/IQKeyboardManager.h> #import <IQKeyboardManager/IQKeyboardManager.h>
#import <TZImagePickerController/TZImagePickerController.h>
///Tool ///Tool
#import "XCCurrentVCStackManager.h" #import "XCCurrentVCStackManager.h"
#import "NIMMessageMaker.h" #import "NIMMessageMaker.h"
#import "XPMacro.h" #import "XPMacro.h"
#import "UITableView+NIMScrollToBottom.h" #import "UITableView+NIMScrollToBottom.h"
#import "ThemeColor.h"
///Model ///Model
#import "RoomInfoModel.h" #import "RoomInfoModel.h"
#import "UserInfoModel.h" #import "UserInfoModel.h"
@@ -30,7 +32,7 @@
#import "MessageProtocol.h" #import "MessageProtocol.h"
@interface SessionViewController ()<MessageProtocol, UITableViewDelegate, UITableViewDataSource, NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate, XPSessionMessageHeadViewDelegate, MessageCellDelegate, SessionToolbarViewDelegate> @interface SessionViewController ()<MessageProtocol, UITableViewDelegate, UITableViewDataSource, NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate, XPSessionMessageHeadViewDelegate, MessageCellDelegate, SessionToolbarViewDelegate, TZImagePickerControllerDelegate>
@property (nonatomic, strong) NIMSession * session; @property (nonatomic, strong) NIMSession * session;
@property (nonatomic, strong) NSMutableArray<NIMMessage *> * messages; @property (nonatomic, strong) NSMutableArray<NIMMessage *> * messages;
@@ -284,6 +286,16 @@
- (void)didSelectMenuItem:(MessageMenuModel *)info { - (void)didSelectMenuItem:(MessageMenuModel *)info {
switch (info.type) { switch (info.type) {
case MessageMenuType_Photo: case MessageMenuType_Photo:
{
TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self];
imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen;
imagePickerVc.allowPickingVideo = NO;
imagePickerVc.allowTakeVideo = NO;
imagePickerVc.naviBgColor = [ThemeColor appCellBackgroundColor];
imagePickerVc.naviTitleColor = [ThemeColor mainTextColor];
imagePickerVc.barItemTextColor = [ThemeColor mainTextColor];
[self presentViewController:imagePickerVc animated:YES completion:nil];
}
break; break;
case MessageMenuType_Gift: case MessageMenuType_Gift:
break; break;
@@ -292,6 +304,26 @@
} }
} }
#pragma mark - TZImagePickerControllerDelegate
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray<UIImage *> *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray<NSDictionary *> *)infos {
[photos enumerateObjectsUsingBlock:^(UIImage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (obj) {
//
NIMSession *session = [NIMSession session:self.session.sessionId type:NIMSessionTypeP2P];
//
NIMImageObject *object = [[NIMImageObject alloc] initWithImage:obj];
//
NIMMessage *message = [[NIMMessage alloc] init];
message.messageObject = object;
//
NSError *error = nil;
//
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:&error];
}
}];
}
#pragma mark - Getters And Setters #pragma mark - Getters And Setters
- (NSArray<NIMMessage *> *)messages { - (NSArray<NIMMessage *> *)messages {
if (!_messages) { if (!_messages) {