我正在使用iOS的XMPPFramework。
我的问题是,当我加入一个房间,然后离开它,然后再次加入我从那个房间收到消息,或者在那个房间内发送私信两次,如果我离开它并再次加入我接收了3次,等等。
我被告知我可能会注册多个代表并且不会删除它们,但是如果我这样做我会意外地进行,我不确定这是在哪里发生的。 任何人都可以帮助找到这种情况发生在哪里?也许一个例子可以帮助我在我的代码中找到它。
感谢。
答案 0 :(得分:7)
以防有人想知道。
离开房间的正确方法是执行以下功能:
[xmppRoom leaveRoom];
[xmppRoom deactivate];
[xmppRoom removeDelegate:self];
答案 1 :(得分:0)
我认为remoteTimestamp值存在问题。我通过在文件中添加变通方法来解决问题: 扩展/ XEP-0045 / CoreDataStorage / XMPPRoomCoreDataStorage.m
之前:
- (BOOL)existsMessage:(XMPPMessage *)message forRoom:(XMPPRoom *)room stream:(XMPPStream *)xmppStream
{
NSDate *remoteTimestamp = [message delayedDeliveryDate];
if (remoteTimestamp == nil)
{
return NO;
}
NSManagedObjectContext *moc = [self managedObjectContext];
......
}
后:
- (BOOL)existsMessage:(XMPPMessage *)message forRoom:(XMPPRoom *)room stream:(XMPPStream *)xmppStream
{
NSDate *remoteTimestamp = [message delayedDeliveryDate];
if (remoteTimestamp == nil)
{
return NO;
}
remoteTimestamp = nil;
NSManagedObjectContext *moc = [self managedObjectContext];
......
}