从 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 对话框中删除特定聊天消息的主要内容,如果未能解决你的问题,请参考以下文章

quickblox - 删除私人(1 对 1)聊天

Xamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true

当用户在 quickblox 的 ios 中离线时获取消息

最近的聊天应该在 quickblox 历史列表中排在第一位

从 QuickBlox 聊天室收到的消息中的数据包 ID 为空

QuickBlox 聊天记录