【问题标题】:Delete specific chat message from a Quickblox dialog从 Quickblox 对话框中删除特定聊天消息
【发布时间】: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);
}];

【问题讨论】:

    标签: ios xcode quickblox


    【解决方案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 参数,那么它只会被当前用户删除,其他用户仍然拥有它。

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多