Skip to content

Commit 396a1e1

Browse files
guangyaoguangyao
authored andcommitted
增加黑名单、非好友状态下发送消息提示
1 parent c92d164 commit 396a1e1

File tree

2 files changed

+84
-58
lines changed

2 files changed

+84
-58
lines changed

ios/RNNeteaseIm/RNNeteaseIm/ContactViewController.m

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -205,50 +205,6 @@ -(void)updateMyUserInfo:(NSString *)strName{
205205
} error:^(NSString *error) {
206206
NSLog(@"更新失败");
207207
}];
208-
/*
209-
NSArray *keys = [userInFo allKeys];
210-
NSMutableDictionary *userDic = [NSMutableDictionary dictionary];
211-
for (NSString *tem in keys) {
212-
//设置用户昵称
213-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagNick"]) {
214-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagNick"] forKey:@(NIMUserInfoUpdateTagNick)];
215-
}
216-
//用户头像
217-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagAvatar"]) {
218-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagAvatar"] forKey:@(NIMUserInfoUpdateTagAvatar)];
219-
}
220-
//用户签名
221-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagSign"]) {
222-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagSign"] forKey:@(NIMUserInfoUpdateTagSign)];
223-
}
224-
//用户性别
225-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagGender"]) {
226-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagGender"] forKey:@(NIMUserInfoUpdateTagGender)];
227-
}
228-
//用户邮箱
229-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagEmail"]) {
230-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagEmail"] forKey:@(NIMUserInfoUpdateTagEmail)];
231-
}
232-
//用户生日
233-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagBirth"]) {
234-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagBirth"] forKey:@(NIMUserInfoUpdateTagBirth)];
235-
}
236-
//用户手机
237-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagBirth"]) {
238-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagBirth"] forKey:@(NIMUserInfoUpdateTagBirth)];
239-
}
240-
//拓展字段
241-
if ([tem isEqualToString:@"NIMUserInfoUpdateTagExt"]) {
242-
[userDic setObject:[userInFo objectForKey:@"NIMUserInfoUpdateTagExt"] forKey:@(NIMUserInfoUpdateTagExt)];
243-
}
244-
}
245-
[[NIMSDK sharedSDK].userManager updateMyUserInfo:userDic completion:^(NSError *error) {
246-
if (!error) {
247-
success(@"设置成功");
248-
}else{
249-
err(@"昵称设置失败,请重试");
250-
}
251-
}];*/
252208
}
253209

254210
//- (void)presentMemberSelector:(ContactSelectFinishBlock) block{

ios/RNNeteaseIm/RNNeteaseIm/ConversationViewController.m

Lines changed: 84 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,15 @@ -(void)localSessionList:(NSString *)sessionId sessionType:(NSString *)sessionTyp
7979
- (void)resendMessage:(NSString *)messageID{
8080
NSArray *currentMessage = [[[NIMSDK sharedSDK] conversationManager] messagesInSession:_session messageIds:@[messageID] ];
8181
NIMMessage *currentM = currentMessage[0];
82-
if (currentM.isReceivedMsg) {
83-
[[[NIMSDK sharedSDK] chatManager] fetchMessageAttachment:currentM error:nil];
82+
NSString *isFriend = [currentM.localExt objectForKey:@"isFriend"];
83+
if ([isFriend length]) {
84+
8485
}else{
85-
[[[NIMSDK sharedSDK] chatManager] resendMessage:currentM error:nil];
86+
if (currentM.isReceivedMsg) {
87+
[[[NIMSDK sharedSDK] chatManager] fetchMessageAttachment:currentM error:nil];
88+
}else{
89+
[[[NIMSDK sharedSDK] chatManager] resendMessage:currentM error:nil];
90+
}
8691
}
8792
}
8893

@@ -157,9 +162,15 @@ -(NSMutableArray *)setTimeArr:(NSArray *)messageArr{
157162
[dic setObject:@"send_succeed" forKey:@"status"];
158163
break;
159164
default:
160-
[dic setObject:@"-1" forKey:@"status"];
165+
[dic setObject:@"send_failed" forKey:@"status"];
161166
break;
162167
}
168+
NSString *isFriend = [message.localExt objectForKey:@"isFriend"];
169+
if ([isFriend length]) {
170+
if ([isFriend isEqualToString:@"NO"]) {
171+
[dic setObject:@"send_failed" forKey:@"status"];
172+
}
173+
}
163174
[dic setObject: [NSNumber numberWithBool:message.isOutgoingMsg] forKey:@"isOutgoing"];
164175
[dic setObject:[NSString stringWithFormat:@"%f", message.timestamp] forKey:@"timeString"];
165176
[dic setObject:[NSNumber numberWithBool:NO] forKey:@"isShowTime"];
@@ -363,21 +374,28 @@ - (void)stopPlay{
363374
//发送录音
364375
-(void)sendAudioMessage:( NSString *)file duration:( NSString *)duration{
365376
if (file) {
366-
[[[NIMSDK sharedSDK] chatManager] sendMessage:[NIMMessageMaker msgWithAudio:file andeSession:_session] toSession:_session error:nil];
377+
NIMMessage *message = [NIMMessageMaker msgWithAudio:file andeSession:_session];
378+
if ([self isFriendToSendMessage:message]) {
379+
[[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:_session error:nil];
380+
}
367381
}
368382
}
369383
//发送文字消息
370384
-(void)sendMessage:(NSString *)mess andApnsMembers:(NSArray *)members{
371385
NIMMessage *message = [NIMMessageMaker msgWithText:mess andApnsMembers:members andeSession:_session];
372386
//发送消息
373-
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
387+
if ([self isFriendToSendMessage:message]) {
388+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
389+
}
374390
}
375391
//发送图片
376392
-(void)sendImageMessages:( NSString *)path displayName:( NSString *)displayName{
377393
UIImage *img = [[UIImage alloc]initWithContentsOfFile:path];
378394
NIMMessage *message = [NIMMessageMaker msgWithImage:img andeSession:_session];
379395
// NIMMessage *message = [NIMMessageMaker msgWithImagePath:path];
380-
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
396+
if ([self isFriendToSendMessage:message]) {
397+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
398+
}
381399
}
382400

383401
//发送视频
@@ -388,6 +406,9 @@ -(void)sendTextMessage:( NSString *)path duration:( NSString *)duration width:
388406
// }else{
389407
message = [NIMMessageMaker msgWithVideo:path andeSession:_session];
390408
// }
409+
if ([self isFriendToSendMessage:message]) {
410+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
411+
}
391412
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
392413

393414
}
@@ -398,15 +419,19 @@ -(void)sendCustomMessage:( NSString *)attachment config:( NSString *)config{
398419
NIMObject *obj = [NIMObject initNIMObject];
399420
obj.attachment =attachment;
400421
message = [NIMMessageMaker msgWithCustom:obj andeSession:_session];
401-
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
422+
if ([self isFriendToSendMessage:message]) {
423+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
424+
}
402425
}
403426

404427
//发送地理位置消息
405428
-(void)sendLocationMessage:( NSString *)latitude longitude:( NSString *)longitude address:( NSString *)address{
406429
NIMLocationObject *locaObj = [[NIMLocationObject alloc]initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue] title:address];
407430
NIMKitLocationPoint *locationPoint = [[NIMKitLocationPoint alloc]initWithLocationObject:locaObj];
408431
NIMMessage *message = [NIMMessageMaker msgWithLocation:locationPoint andeSession:_session];
409-
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
432+
if ([self isFriendToSendMessage:message]) {
433+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
434+
}
410435
}
411436
//发送自定义消息2
412437
-(void)sendCustomMessage:(NSInteger )custType data:(NSDictionary *)dataDict{
@@ -415,7 +440,9 @@ -(void)sendCustomMessage:(NSInteger )custType data:(NSDictionary *)dataDict{
415440
obj.custType = custType;
416441
obj.dataDict = dataDict;
417442
message = [NIMMessageMaker msgWithCustomAttachment:obj andeSession:_session];
418-
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
443+
if ([self isFriendToSendMessage:message]) {
444+
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:_session error:nil];
445+
}
419446
}
420447

421448
//发送提醒消息
@@ -518,6 +545,16 @@ - (void)sendMessage:(NIMMessage *)message didCompleteWithError:(NSError *)error
518545
[self refrashMessage:message From:@"send"];
519546
[[NSUserDefaults standardUserDefaults]setObject: [NSString stringWithFormat:@"%f", message.timestamp] forKey:@"timestamp"];
520547
}else{
548+
NSDictionary *userInfo = error.userInfo;
549+
NSString *strEnum = [userInfo objectForKey:@"enum"];
550+
if ([strEnum isEqualToString:@"NIMRemoteErrorCodeInBlackList"]) {
551+
NSString * tip = @"消息已发出,但被对方拒收了";
552+
NIMMessage *tipMessage = [self msgWithTip:tip];
553+
tipMessage.timestamp = message.timestamp;
554+
[[NIMSDK sharedSDK].conversationManager saveMessage:tipMessage forSession:_session completion:nil];
555+
}
556+
message.localExt = @{@"isFriend":@"NO"};
557+
[[NIMSDK sharedSDK].conversationManager updateMessage:message forSession:_session completion:nil];
521558
[self refrashMessage:message From:@"send"];
522559
}
523560
NIMModel *model = [NIMModel initShareMD];
@@ -544,9 +581,7 @@ - (void)onRecvMessages:(NSArray *)messages
544581
if ([message.session.sessionId isEqualToString:_sessionID]) {
545582
[self refrashMessage:message From:@"receive" ];
546583
NIMMessageReceipt *receipt = [[NIMMessageReceipt alloc] initWithMessage:message];
547-
548-
[[[NIMSDK sharedSDK] chatManager] sendMessageReceipt:receipt
549-
completion:nil];
584+
[[[NIMSDK sharedSDK] chatManager] sendMessageReceipt:receipt completion:nil];
550585
//标记已读消息
551586
[[NIMSDK sharedSDK].conversationManager markAllMessagesReadInSession:_session];
552587

@@ -780,9 +815,15 @@ -(void)refrashMessage:(NIMMessage *)message From:(NSString *)from {
780815
[dic2 setObject:@"send_succeed" forKey:@"status"];
781816
break;
782817
default:
783-
[dic2 setObject:@"-1" forKey:@"status"];
818+
[dic2 setObject:@"send_failed" forKey:@"status"];
784819
break;
785820
}
821+
NSString *isFriend = [message.localExt objectForKey:@"isFriend"];
822+
if ([isFriend length]) {
823+
if ([isFriend isEqualToString:@"NO"]) {
824+
[dic2 setObject:@"send_failed" forKey:@"status"];
825+
}
826+
}
786827
[dic2 setObject: [NSNumber numberWithBool:message.isOutgoingMsg] forKey:@"isOutgoing"];
787828
[dic2 setObject:[NSString stringWithFormat:@"%f", message.timestamp] forKey:@"timeString"];
788829
[dic2 setObject:[NSNumber numberWithBool:NO] forKey:@"isShowTime"];
@@ -1135,4 +1176,33 @@ -(void)stopSession;
11351176
[[NIMSDK sharedSDK].conversationManager removeDelegate:self];
11361177
[[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self];
11371178
}
1179+
//判断是不是好友
1180+
- (BOOL)isFriendToSendMessage:(NIMMessage *)message{
1181+
if (_session.sessionType == NIMSessionTypeP2P) {//点对点
1182+
NSString *strSessionId = _session.sessionId;
1183+
if ([[NIMSDK sharedSDK].userManager isMyFriend:strSessionId]) {//判断是否为自己好友
1184+
return YES;
1185+
}else{
1186+
message.localExt = @{@"isFriend":@"NO"};
1187+
[[NIMSDK sharedSDK].conversationManager saveMessage:message forSession:_session completion:nil];
1188+
NSString *strSessionName = @"";
1189+
NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:strSessionId];
1190+
if ([user.alias length]) {
1191+
strSessionName = user.alias;
1192+
}else{
1193+
NIMUserInfo *userInfo = user.userInfo;
1194+
strSessionName = userInfo.nickName;
1195+
}
1196+
1197+
NSString * tip = [NSString stringWithFormat:@"%@开启了朋友验证,你还不是他(她)朋友。请先发送朋友验证请求,对方验证通过后,才能聊天。",strSessionName];
1198+
NIMMessage *tipMessage = [self msgWithTip:tip];
1199+
tipMessage.timestamp = message.timestamp+1;
1200+
[[NIMSDK sharedSDK].conversationManager saveMessage:tipMessage forSession:_session completion:nil];
1201+
return NO;
1202+
}
1203+
}else{
1204+
return YES;
1205+
}
1206+
}
1207+
11381208
@end

0 commit comments

Comments
 (0)