Я хочу отслеживать онлайн статус различных (!) Пользователей одновременно.Представьте себе приложение для чата с коллекцией аватаров профилей.Каждый онлайн-профиль будет иметь маленькую зеленую кнопку.
Я использую GeoFire для поиска пользователей в определенной области.Geofire возвращает мне набор UID.В моей базе данных у меня есть
/users/{uid}/name
/users/{uid}/lastname
/users/{uid}/onlinestatus = true/false
С набором идентификаторов, возвращаемых из GeoFire, я тогда делаю:
var userprofiles = [UserProfiles]()
var processses = uids.count
for uid in uids {
FirebaseAP.getprofile(uid:UID) { (userprofile)
processes -= 1
userprofiles.append(userprofile)
if processes == 0 {
// call completion handler
// update UI Userlist
}
}
}
Мне нужно будет установить наблюдателя на каждый UID, когда этопроисходит закрытие наблюдателя, мне придется искать этого пользователя в локальных пользователях и обновлять значение.Это звучит не очень удобно для меня.
Каков наилучший способ сделать это?
Помните: я не слежу за 1 пользователем, я слежу за 20, 50, может быть, 300.