사용자가 채팅을 열 때마다 사용자의 온라인 상태를 추가하려고합니다. ChatVC에서Firebase 채팅이 사용자의 온라인 상태를 설정합니다.
public static func getFirebaseOnlineStatus(userRef: String) -> FIRDatabaseReference{
return FIRDatabase.database().reference()
.child("meta")
.child(userRef)
.child("last_seen")
}
는
private func userIsOnline() {
// Firebase make this user online
firebaseLastSeen = Constants.getFirebaseOnlineStatus(SMBUser.getCurrentUser().getId())
firebaseLastSeen.setValue("Online")
}
private func observerUserOnline(){
firebaseLastSeen.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
self.userIsOnline()
}, withCancelBlock: { error in
print(error.description)
})
}
이 논리는 내가 다음 observerUserOnline()
을 제거하는 경우 때문에 때마다 같은 값 변경, 내가 다시 Online
에 값을 변경하고있어, 나에게 아주 나쁜 것 같다 값이 Online
(last_seen
)으로 업데이트되지만 2-3 초 후에 사용자가 해당 채팅에서 온라인 상태 인 경우에도 time(unix format)
으로 변경됩니다.
이 문제를 해결하는 더 좋은 방법이 있습니까?