从Quickblox对话框中删除特定的聊天消息

时间:2015-06-29 12:33:54

标签: ios xcode quickblox

在我的应用中,我正在实施快速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);
}];

2 个答案:

答案 0 :(得分:0)

您还必须从本地删除该消息。

就像我使用单个messege一样

  - (void)removeMessage:(QBChatMessage *)message forDialogId:(NSString *)dialogId
   {
      NSMutableArray *messagesArray = [self.messages objectForKey:dialogId];
      if(messagesArray != nil){

      [messagesArray removeObject:message];

      [self sortMessages:messagesArray];
   }
  }

答案 1 :(得分:0)

  

迅速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参数,则该参数将仅对当前用户删除,而其他用户仍将拥有它。