私信模块:发送私信
This commit is contained in:
@@ -100,6 +100,7 @@
|
||||
18EE3FEE2750CE6D00A452BF /* NIMMessageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FED2750CE6D00A452BF /* NIMMessageUtils.m */; };
|
||||
18EE3FF12750D2AD00A452BF /* NIMTimeUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */; };
|
||||
18EE3FF42750FA3700A452BF /* UIView+NIM.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE3FF32750FA3700A452BF /* UIView+NIM.m */; };
|
||||
18EE401A2754BA9F00A452BF /* NIMMessageMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EE40182754BA9F00A452BF /* NIMMessageMaker.m */; };
|
||||
73FFADDC93E195344047A2EC /* Pods_xplan_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_xplan_ios.framework */; };
|
||||
9B0E1C5926E77022005D4442 /* BaseNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0E1C5826E77022005D4442 /* BaseNavigationController.m */; };
|
||||
9B7D804A2753783D003DAC0C /* SessionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B7D80492753783D003DAC0C /* SessionViewController.m */; };
|
||||
@@ -459,6 +460,8 @@
|
||||
18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NIMTimeUtils.m; sourceTree = "<group>"; };
|
||||
18EE3FF22750FA3700A452BF /* UIView+NIM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+NIM.h"; sourceTree = "<group>"; };
|
||||
18EE3FF32750FA3700A452BF /* UIView+NIM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+NIM.m"; sourceTree = "<group>"; };
|
||||
18EE40182754BA9F00A452BF /* NIMMessageMaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMMessageMaker.m; sourceTree = "<group>"; };
|
||||
18EE40192754BA9F00A452BF /* NIMMessageMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMMessageMaker.h; sourceTree = "<group>"; };
|
||||
7DB00EC07F1D0ADFF900B38D /* Pods-xplan-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-xplan-ios.debug.xcconfig"; path = "Target Support Files/Pods-xplan-ios/Pods-xplan-ios.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
9B0E1C5726E77022005D4442 /* BaseNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseNavigationController.h; sourceTree = "<group>"; };
|
||||
9B0E1C5826E77022005D4442 /* BaseNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseNavigationController.m; sourceTree = "<group>"; };
|
||||
@@ -1307,6 +1310,8 @@
|
||||
18EE3FED2750CE6D00A452BF /* NIMMessageUtils.m */,
|
||||
18EE3FEF2750D2AD00A452BF /* NIMTimeUtils.h */,
|
||||
18EE3FF02750D2AD00A452BF /* NIMTimeUtils.m */,
|
||||
18EE40192754BA9F00A452BF /* NIMMessageMaker.h */,
|
||||
18EE40182754BA9F00A452BF /* NIMMessageMaker.m */,
|
||||
);
|
||||
path = Message;
|
||||
sourceTree = "<group>";
|
||||
@@ -2381,6 +2386,7 @@
|
||||
18EE3FE22750C29D00A452BF /* NIMBadgeView.m in Sources */,
|
||||
E82EE0F8272FDDFA00D15DC1 /* UserPrivacyView.m in Sources */,
|
||||
189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */,
|
||||
18EE401A2754BA9F00A452BF /* NIMMessageMaker.m in Sources */,
|
||||
E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */,
|
||||
E890BC0D273D09A50007C46B /* XPGiftCountView.m in Sources */,
|
||||
E8AC722F26F49610007D6E91 /* XPMineNotificationItemModel.m in Sources */,
|
||||
|
34
xplan-ios/Main/Message/NIMMessageMaker.h
Normal file
34
xplan-ios/Main/Message/NIMMessageMaker.h
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// NIMMessageMaker.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by zu on 2021/11/28.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <NIMSDK/NIMSDK.h>
|
||||
|
||||
@interface NIMMessageMaker : NSObject
|
||||
|
||||
+ (NIMMessage*)msgWithText:(NSString *)text;
|
||||
|
||||
+ (NIMMessage *)msgWithAudio:(NSString *)filePath;
|
||||
|
||||
+ (NIMMessage *)msgWithImage:(UIImage *)image;
|
||||
|
||||
+ (NIMMessage *)msgWithImagePath:(NSString *)path;
|
||||
|
||||
+ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension;
|
||||
|
||||
+ (NIMMessage *)msgWithVideo:(NSString *)filePath;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface NIMCommentMaker : NSObject
|
||||
|
||||
+ (NIMQuickComment *)commentWithType:(int64_t)type
|
||||
content:(NSString *)content
|
||||
ext:(NSString *)ext;
|
||||
|
||||
@end
|
114
xplan-ios/Main/Message/NIMMessageMaker.m
Normal file
114
xplan-ios/Main/Message/NIMMessageMaker.m
Normal file
@@ -0,0 +1,114 @@
|
||||
//
|
||||
// NIMMessageMaker.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by zu on 2021/11/28.
|
||||
//
|
||||
|
||||
#import "NIMMessageMaker.h"
|
||||
|
||||
@implementation NIMMessageMaker
|
||||
|
||||
+ (NIMMessage*)msgWithText:(NSString*)text
|
||||
{
|
||||
NIMMessage *textMessage = [[NIMMessage alloc] init];
|
||||
textMessage.text = text;
|
||||
[self setupMessage:textMessage];
|
||||
return textMessage;
|
||||
}
|
||||
|
||||
+ (NIMMessage*)msgWithAudio:(NSString*)filePath
|
||||
{
|
||||
NIMAudioObject *audioObject = [[NIMAudioObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage];
|
||||
NIMMessage *message = [[NIMMessage alloc] init];
|
||||
message.messageObject = audioObject;
|
||||
message.text = @"发来了一段语音";
|
||||
[self setupMessage:message];
|
||||
return message;
|
||||
}
|
||||
|
||||
+ (NIMMessage*)msgWithVideo:(NSString*)filePath
|
||||
{
|
||||
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
||||
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
|
||||
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
|
||||
NIMVideoObject *videoObject = [[NIMVideoObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage];
|
||||
videoObject.displayName = [NSString stringWithFormat:@"视频发送于%@", dateString];
|
||||
NIMMessage *message = [[NIMMessage alloc] init];
|
||||
message.messageObject = videoObject;
|
||||
message.apnsContent = @"发来了一段视频";
|
||||
[self setupMessage:message];
|
||||
return message;
|
||||
}
|
||||
|
||||
+ (NIMMessage*)msgWithImage:(UIImage*)image
|
||||
{
|
||||
NIMImageObject *imageObject = [[NIMImageObject alloc] initWithImage:image scene:NIMNOSSceneTypeMessage];
|
||||
NIMImageOption *option = [[NIMImageOption alloc] init];
|
||||
option.compressQuality = 0.7;
|
||||
imageObject.option = option;
|
||||
return [NIMMessageMaker generateImageMessage:imageObject];
|
||||
}
|
||||
|
||||
+ (NIMMessage *)msgWithImagePath:(NSString*)path
|
||||
{
|
||||
NIMImageObject * imageObject = [[NIMImageObject alloc] initWithFilepath:path scene:NIMNOSSceneTypeMessage];
|
||||
return [NIMMessageMaker generateImageMessage:imageObject];
|
||||
}
|
||||
|
||||
+ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension
|
||||
{
|
||||
NIMImageObject *imageObject = [[NIMImageObject alloc] initWithData:data extension:extension];
|
||||
return [NIMMessageMaker generateImageMessage:imageObject];
|
||||
}
|
||||
|
||||
+ (NIMMessage *)generateImageMessage:(NIMImageObject *)imageObject
|
||||
{
|
||||
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
|
||||
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"];
|
||||
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
|
||||
imageObject.displayName = [NSString stringWithFormat:@"图片发送于%@", dateString];
|
||||
NIMMessage *message = [[NIMMessage alloc] init];
|
||||
message.messageObject = imageObject;
|
||||
message.apnsContent = @"发来了一张图片";
|
||||
[self setupMessage:message];
|
||||
return message;
|
||||
}
|
||||
|
||||
+ (void)setupMessage:(NIMMessage *)message
|
||||
{
|
||||
message.apnsPayload = @{
|
||||
@"apns-collapse-id": message.messageId,
|
||||
};
|
||||
|
||||
NIMMessageSetting *setting = [[NIMMessageSetting alloc] init];
|
||||
setting.scene = NIMNOSSceneTypeMessage;
|
||||
message.setting = setting;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation NIMCommentMaker
|
||||
|
||||
+ (NIMQuickComment *)commentWithType:(int64_t)type
|
||||
content:(NSString *)content
|
||||
ext:(NSString *)ext
|
||||
{
|
||||
NIMQuickComment *comment = [[NIMQuickComment alloc] init];
|
||||
comment.ext = ext;
|
||||
NIMQuickCommentSetting *setting = [[NIMQuickCommentSetting alloc] init];
|
||||
setting.needPush = YES;
|
||||
setting.needBadge = YES;
|
||||
setting.pushTitle = @"你收到了一条快捷评论";
|
||||
setting.pushContent = content;
|
||||
setting.pushPayload = @{
|
||||
@"key" : @"value"
|
||||
};
|
||||
comment.setting = setting;
|
||||
comment.replyType = type;
|
||||
return comment;
|
||||
}
|
||||
|
||||
@end
|
@@ -7,12 +7,18 @@
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "RoomHostDelegate.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol SendMessageViewDelegate <NSObject>
|
||||
|
||||
- (void)sendTextMessage:(NSString *)text;
|
||||
|
||||
@end
|
||||
|
||||
@interface SendMessageView : UIView
|
||||
|
||||
@property (nonatomic, weak) id<SendMessageViewDelegate> delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -39,10 +39,12 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Response
|
||||
|
||||
- (void)sendButtonDidClick:(UIButton *)sender {
|
||||
|
||||
- (void)sendMessage:(UIButton *)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(sendTextMessage:)]) {
|
||||
[self.delegate sendTextMessage:self.inputView.text];
|
||||
}
|
||||
self.inputView.text = @"";
|
||||
self.sendButton.enabled = self.inputView.text.length > 0;
|
||||
}
|
||||
|
||||
- (void)keyboardWillShow:(NSNotification *)notification {
|
||||
@@ -179,7 +181,7 @@
|
||||
_sendButton.enabled = NO;
|
||||
_sendButton.layer.cornerRadius = 5.0;
|
||||
_sendButton.layer.masksToBounds = YES;
|
||||
[_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_sendButton addTarget:self action:@selector(sendMessage:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _sendButton;
|
||||
}
|
||||
|
@@ -9,11 +9,13 @@
|
||||
#import "MessageCell.h"
|
||||
#import "SendMessageView.h"
|
||||
#import "UITableView+NIMScrollToBottom.h"
|
||||
|
||||
#import "NIMMessageMaker.h"
|
||||
#import "XPMacro.h"
|
||||
|
||||
#import <Masonry/Masonry.h>
|
||||
|
||||
@interface SessionViewController ()<UITableViewDelegate, UITableViewDataSource, NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate>
|
||||
@interface SessionViewController ()<UITableViewDelegate, UITableViewDataSource, NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate, SendMessageViewDelegate>
|
||||
|
||||
@property (nonatomic, strong) NIMSession * session;
|
||||
@property (nonatomic, strong) NSMutableArray<NIMMessage *> * messages;
|
||||
@@ -73,9 +75,7 @@
|
||||
}
|
||||
|
||||
- (void)initData {
|
||||
NSArray<NIMMessage *> *messages = [[[NIMSDK sharedSDK] conversationManager] messagesInSession:self.session
|
||||
message:nil
|
||||
limit:1000];
|
||||
NSArray<NIMMessage *> *messages = [[NIMSDK sharedSDK].conversationManager messagesInSession:self.session message:nil limit:1000];
|
||||
[self.messages addObjectsFromArray:messages.copy];
|
||||
[self.sessionTableView reloadData];
|
||||
[self.sessionTableView nim_scrollToBottom:NO];
|
||||
@@ -131,12 +131,24 @@
|
||||
[[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:self.session];
|
||||
}
|
||||
|
||||
- (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error {
|
||||
[self.messages addObject:message];
|
||||
[self.sessionTableView reloadData];
|
||||
[self.sessionTableView nim_scrollToBottom:YES];
|
||||
}
|
||||
|
||||
#pragma mark - NIMConversationManagerDelegate
|
||||
- (void)messagesDeletedInSession:(NIMSession *)session {
|
||||
[self.messages removeAllObjects];
|
||||
[self initData];
|
||||
}
|
||||
|
||||
#pragma mark - SendMessageViewDelegate
|
||||
- (void)sendTextMessage:(NSString *)text {
|
||||
NIMMessage *message = [NIMMessageMaker msgWithText:text];
|
||||
[[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil];
|
||||
}
|
||||
|
||||
- (NSArray<NIMMessage *> *)messages {
|
||||
if (!_messages) {
|
||||
_messages = [[NSMutableArray alloc] init];
|
||||
@@ -166,6 +178,7 @@
|
||||
- (SendMessageView *)sendMessageView {
|
||||
if (!_sendMessageView) {
|
||||
_sendMessageView = [[SendMessageView alloc] init];
|
||||
_sendMessageView.delegate = self;
|
||||
}
|
||||
return _sendMessageView;
|
||||
}
|
||||
|
@@ -238,7 +238,7 @@
|
||||
_sendButton.enabled = NO;
|
||||
_sendButton.layer.cornerRadius = 5.0;
|
||||
_sendButton.layer.masksToBounds = YES;
|
||||
[_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_sendButton addTarget:self action:@selector(sendMessage:) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _sendButton;
|
||||
}
|
||||
|
Reference in New Issue
Block a user