【问题标题】:number of unread messages from xmpp ios来自 xmpp ios 的未读消息数
【发布时间】:2015-05-08 23:45:05
【问题描述】:

我正在使用XMPPFrameWork 开发一个聊天应用程序。一切正常 完美,但我坚持获取未读消息的数量。我必须展示 tableView 尚未打开的消息数。我应该如何进行 , 任何想法?我试图显示mostRecentMessage,但没有成功。 任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: objective-c messages xmppframework ios8.1


    【解决方案1】:

    XMPP 的“XMPPUserCoreDataStorageObject”中有一个名为“unreadMessages”的属性。在 Appdelegate 的下面方法中通过 FROM "jid" 获取相应的用户对象并递增 "unreadMessages" 值,

     - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message  
    

    并再次在同一个数据库中更新它。就像,

    XMPPUserCoreDataStorageObject *user = [self.xmppRosterStorage userForJID:[XMPPJID jidWithString:[NSString stringWithFormat:@"%@", [[[message fromStr] componentsSeparatedByString:@"/"]objectAtIndex:0] ]]
                                                                              xmppStream:self.xmppStream
                                                                    managedObjectContext:[self managedObjectContext_roster]];
    
        NSNumber *number = user.unreadMessages;
    
        int value = [number intValue];
    
        number = [NSNumber numberWithInt:value + 1];
    
        user.unreadMessages = number;
    

    然后在任何视图控制器中使用上述代码来检索未读消息计数。

    【讨论】:

    • 我使用了你的代码..但它每次都返回用户 nil。
    • 它适用于我..如果 USER 为 nil,显然您传递的 JID 错误或格式不正确..请检查。
    • @VijayKarthik 我已经编写了上面的代码,但即使用户阅读了消息,它也会显示未读消息计数......以及何时需要将其设置为 0.. 我们如何知道消息是否已读...
    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2015-08-24
    相关资源
    最近更新 更多