我正在使用iOS的XMPPFramework。
我的问题是,当我加入一个房间,然后离开它,然后再次加入它,我会收到来自该房间的消息,或者在该房间内两次收到私人消息,如果我离开它并再次加入,我会收到3次,以此类推。
有人告诉我,我可能注册了多个委托,而不是删除它们,但如果我这样做了,我就是意外地这样做了,我不太确定这是在哪里发生的。有人能帮我找出这是在哪里发生的吗?也许一个例子可以帮助我在代码中找到它。
谢谢。
发布于 2012-01-20 19:40:01
以防有人想知道。
离开房间的正确方法是执行以下功能:
[xmppRoom leaveRoom];
[xmppRoom deactivate];
[xmppRoom removeDelegate:self];发布于 2012-10-30 17:29:54
我认为remoteTimestamp值有问题。我通过在文件中添加解决方法来解决这个问题: Extensions/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];
......
}https://stackoverflow.com/questions/8878122
复制相似问题