首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMPPFramework -获取重复消息

XMPPFramework -获取重复消息
EN

Stack Overflow用户
提问于 2012-01-16 17:43:49
回答 2查看 2K关注 0票数 4

我正在使用iOS的XMPPFramework。

我的问题是,当我加入一个房间,然后离开它,然后再次加入它,我会收到来自该房间的消息,或者在该房间内两次收到私人消息,如果我离开它并再次加入,我会收到3次,以此类推。

有人告诉我,我可能注册了多个委托,而不是删除它们,但如果我这样做了,我就是意外地这样做了,我不太确定这是在哪里发生的。有人能帮我找出这是在哪里发生的吗?也许一个例子可以帮助我在代码中找到它。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-20 19:40:01

以防有人想知道。

离开房间的正确方法是执行以下功能:

代码语言:javascript
复制
    [xmppRoom leaveRoom];
    [xmppRoom deactivate];
    [xmppRoom removeDelegate:self];
票数 8
EN

Stack Overflow用户

发布于 2012-10-30 17:29:54

我认为remoteTimestamp值有问题。我通过在文件中添加解决方法来解决这个问题: Extensions/XEP-0045/CoreDataStorage/XMPPRoomCoreDataStorage.m

之前:

代码语言:javascript
复制
- (BOOL)existsMessage:(XMPPMessage *)message forRoom:(XMPPRoom *)room stream:(XMPPStream    *)xmppStream
{
    NSDate *remoteTimestamp = [message delayedDeliveryDate];

    if (remoteTimestamp == nil)
    {   
    return NO;
    }

    NSManagedObjectContext *moc = [self managedObjectContext];
    ......
}

之后:

代码语言:javascript
复制
 - (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];
    ......
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8878122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档