从 Quickblox 对话框中删除特定聊天消息
Posted
技术标签:
【中文标题】从 Quickblox 对话框中删除特定聊天消息【英文标题】:Delete specific chat message from a Quickblox dialog 【发布时间】:2015-06-29 12:33:54 【问题描述】:在我的应用程序中,我正在实施快速 blox。我在删除聊天消息时遇到问题。我想删除选定的聊天消息。我的步骤是:
获取特定对话 ID 的消息数组。 获取选定的消息 ID 并将它们添加到 NSSet。 来自 quickblox 服务器的删除请求。我收到了成功的回复。但是,当我再次为此 ID 创建对话框时,我也会收到已删除的消息。当我重新启动我的应用程序并为此 ID 创建对话框时,它工作正常并且我没有收到已删除的消息。我的代码是。
NSMutableSet *messagesToBeDeleteSet = [[NSMutableSet alloc]init];
NSArray *keysArray = [idxDictionary allKeys];
if([keysArray count] > 0)
for(int counter=0; counter<[keysArray count]; counter++)
NSInteger value = [[idxDictionary objectForKey:[keysArray objectAtIndex:counter]] integerValue];
if([[[ChatService shared] messagsForDialogId:self.dialog.ID] count] > 0)
QBChatMessage *message = [[[ChatService shared] messagsForDialogId:self.dialog.ID] objectAtIndex:value];
[messagesToBeDeleteSet addObject:message.ID];
[QBRequest deleteMessagesWithIDs:messagesToBeDeleteSet successBlock:^(QBResponse *response)
NSLog(@"success");
errorBlock:^(QBResponse *response)
NSLog(@"deleteMessageWithID error:%@", response.error);
];
【问题讨论】:
【参考方案1】:您还必须从本地删除该消息。
就像我对单一消息的使用一样
- (void)removeMessage:(QBChatMessage *)message forDialogId:(NSString *)dialogId
NSMutableArray *messagesArray = [self.messages objectForKey:dialogId];
if(messagesArray != nil)
[messagesArray removeObject:message];
[self sortMessages:messagesArray];
【讨论】:
【参考方案2】:斯威夫特 5:
删除邮件前我们应该知道的事情。
如果您是消息的所有者(即您的消息)
您可以为所有人删除消息,也可以为自己删除消息如果您不是消息的所有者(即对方用户的消息)
您只能为您删除该消息(不能为所有人删除)以下API用于删除消息
//You can delete single or multiple messages by using single API. (need message id's)
QBRequest.deleteMessages(withIDs: Set(arrayLiteral:"54fdbb69535c12c2e407c672","54fdbb69535c12c2e407c673"), forAllUsers: true, successBlock: (response) in
print("Deleted Successfully")
) (err) in
print("Failed")
如果您将true
传递给forAllUsers
参数并且您是该消息的所有者,那么将为所有用户删除该消息。如果你将false
传递给forAllUsers
参数,那么它只会被当前用户删除,其他用户仍然拥有它。
【讨论】:
以上是关于从 Quickblox 对话框中删除特定聊天消息的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true