gpt4 book ai didi

iphone - 使用 XMPPFramework for ios 存储消息?

转载 作者:IT王子 更新时间:2023-10-29 07:51:19 26 4
gpt4 key购买 nike

我不确定如何使用 XMPPFramework 的核心数据来存储传入消息。有没有人有任何关于如何做到这一点的教程?我看到用户对象,它又可以有很多“资源”。收到的每条消息都应该是我创建并保留的新资源吗?

我不知道哪一部分是我的责任,框架提供了哪一部分关于消息历史。我可以拦截每条传入的消息。那么我是否应该使用核心数据在 Messages 表中创建和存储每条消息?我会有一个消息实体。每个 XMPPUser 都会有一个 Message 对象数组。但是那样的话,我不会推出我自己的解决方案,这将与框架相悖吗?

谢谢!

最佳答案

我知道这是一个旧线程,但由于我目前在 iOS 上使用 XMPP,我必须说 XMPP 中有对归档消息的内置支持。

我下载了适用于 iOS 的 XMPP 框架,其中有一个标记为 XEP-0136 的文件夹。在 XCode 中导入文件夹并在实例化 XMPP 客户端的类中使用以下代码行激活客户端存档:

xmppMessageArchivingStorage = [XMPPMessageArchivingCoreDataStorage sharedInstance];
xmppMessageArchivingModule = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:xmppMessageArchivingStorage];

下面的一行代码可以避免将存档特定的节发送到 xmpp 服务器这很可能会响应 service-not-implemented

[xmppMessageArchivingModule setClientSideMessageArchivingOnly:YES];

[xmppMessageArchivingModule activate:xmppStream];
[xmppMessageArchivingModule addDelegate:self delegateQueue:dispatch_get_main_queue()];

你已经准备好了。从那一刻起,消息(传出和传入)将存储在框架创建的表中。

如果您需要更多信息,请发表评论,我会尽快回复您。

@普拉维杰

我喜欢这样:

-(void)testMessageArchiving{
XMPPMessageArchivingCoreDataStorage *storage = [XMPPMessageArchivingCoreDataStorage sharedInstance];
NSManagedObjectContext *moc = [storage mainThreadManagedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:entityDescription];
NSError *error;
NSArray *messages = [moc executeFetchRequest:request error:&error];

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

-(void)print:(NSMutableArray*)messages{
@autoreleasepool {
for (XMPPMessageArchiving_Message_CoreDataObject *message in messages) {
NSLog(@"messageStr param is %@",message.messageStr);
NSXMLElement *element = [[NSXMLElement alloc] initWithXMLString:message.messageStr error:nil];
NSLog(@"to param is %@",[element attributeStringValueForName:@"to"]);
NSLog(@"NSCore object id param is %@",message.objectID);
NSLog(@"bareJid param is %@",message.bareJid);
NSLog(@"bareJidStr param is %@",message.bareJidStr);
NSLog(@"body param is %@",message.body);
NSLog(@"timestamp param is %@",message.timestamp);
NSLog(@"outgoing param is %d",[message.outgoing intValue]);
}
}
}

希望对您有所帮助:)

关于iphone - 使用 XMPPFramework for ios 存储消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com