Присутствие didReceive в xmppframework не работает должным образом

KD4 спросил: 03 ноября 2018 в 09:35 в: swift

Я использую func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) для управления статусом офлайн. Эта функция работает нормально для одного пользователя, но не работает должным образом для нескольких пользователей.

например, у меня есть 3 для пользователей A, B и C, теперь сценарий "Онлайн": статус "офлайн" работает нормально для A - B и B - A, так как функция func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) вызывает очень хорошо. но если пользователь C проверяет состояние A или B, то func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) не вызывается.

Я не смогу понять, в чем проблема. Вот мой код:

func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence) {
    let presenceType = presence.type
    let myUsername = sender.myJID?.user    print("myusername \(myUsername)")    if let usr = presence.from?.user {        print("didReceive :- \(presenceType)")
        print("didReceive usr :- \(usr)")        if usr != myUsername {
            if presenceType == "available" {
                let dict: NSDictionary = ["presenceType":"1",
                                          "user_id":usr]
                if !APP_DELEGATE.arrPresentUser.contains(dict) {
                    APP_DELEGATE.arrPresentUser.add(dict)
                }
            } else {
                let pred : NSPredicate = NSPredicate(format: "user_id = %@", usr)
                let approvalRequestArray =  APP_DELEGATE.arrPresentUser.filtered(using: pred) as NSArray
                if approvalRequestArray.count > 0 {
                    let dict = approvalRequestArray.object(at: 0) as! NSDictionary
                    APP_DELEGATE.arrPresentUser.remove(dict)
                }
            }
            NotificationCenter.default.post(name: Notification.Name("ReceivedUserStatus"), object: nil)
        }
    }
}

Примечание: я также пытался использовать @objc. (@objc func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence))

0 ответов