消息模块-发送图片查看图片
This commit is contained in:
1
Podfile
1
Podfile
@@ -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']
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user