如何使用XMPP框架获取消息传递状态

 pigwangrq 发布于 2023-02-07 13:31

我正在使用XMPP框架在用户之间聊天,聊天正在发生.现在我需要显示消息是完美地传递给两个设备,如(什么是应用程序信使).我没有得到任何教程可以遵循.下面的代码表示我们向其他用户发送消息.

//Sending the message to the other user
 NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
 [body setStringValue:txtChat.text];

 NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
 [message addAttributeWithName:@"type" stringValue:@"chat"];
 [message addAttributeWithName:@"to" stringValue:self.userjid];
 [message addChild:body];
 [[APPDELEGATE xmppStream] sendElement:message];

在使用XMPP Framework重新获取消息时,我使用下面的代码获取数据

- (void)loadarchivemsg
{        
    XMPPMessageArchivingCoreDataStorage *storage = [XMPPMessageArchivingCoreDataStorage sharedInstance];
    NSManagedObjectContext *moc = [storage mainThreadManagedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
                                                         inManagedObjectContext:moc];
    NSFetchRequest *request = [[NSFetchRequest alloc]init];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(bareJidStr like %@) && (streamBareJidStr like %@)", self.userjid,[[NSUserDefaults standardUserDefaults] stringForKey:@"kXMPPmyJID"]];
    request.predicate = predicate;
    NSLog(@"%@",[[NSUserDefaults standardUserDefaults] stringForKey:@"kXMPPmyJID"]);
    [request setEntity:entityDescription];
    NSError *error;
    NSArray *messages_arc = [moc executeFetchRequest:request error:&error];

    [self print:[[NSMutableArray alloc]initWithArray:messages_arc]];    
}

- (void)print:(NSMutableArray*)messages_arc{
    @autoreleasepool {
        for (XMPPMessageArchiving_Message_CoreDataObject *message in messages_arc) {

            NSXMLElement *element = [[NSXMLElement alloc] initWithXMLString:message.messageStr error:nil];
            XMPPMessage *message12=[[XMPPMessage alloc]init];
            message12 = [message message];
  }
}

这就是为什么我发送消息并检索消息,你能帮助我检索消息的传递状态.等待你的宝贵答案.

1 个回答
  • @Romance你需要在connect方法中添加以下代码

      XMPPMessageDeliveryReceipts* xmppMessageDeliveryRecipts = [[XMPPMessageDeliveryReceipts alloc] initWithDispatchQueue:dispatch_get_main_queue()];
        xmppMessageDeliveryRecipts.autoSendMessageDeliveryReceipts = YES;
        xmppMessageDeliveryRecipts.autoSendMessageDeliveryRequests = YES;
        [xmppMessageDeliveryRecipts activate:self.xmppStream];
    

    请记住在发送消息时添加这些行

    NSString *messageID=[self.xmppStream generateUUID];
    
            NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
            [message addAttributeWithName:@"id" stringValue:messageID];
            [message addAttributeWithName:@"type" stringValue:@"chat"];
            [message addAttributeWithName:@"to" stringValue:[NSString stringWithFormat:@"senderJabberID_Here"]];
    
            [message addChild:body];
    

    希望这对你有所帮助:)

    2023-02-07 13:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有