Я использую func xmppStream(_ sender: XMPPStream, didReceive presence: XMPPPresence)
для управления статусом офлайн. Эта функция работает нормально для одного пользователя, но не работает должным образом для нескольких пользователей.
например, у меня 3 пользователя A, Bи C теперь сценарий «Online offline» работает нормально для 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)
)