我正在使用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]; } }
这就是为什么我发送消息并检索消息,你能帮助我检索消息的传递状态.等待你的宝贵答案.
@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];
希望这对你有所帮助:)