Swift 4 Firebase 在线状态更新

标签 swift firebase firebase-realtime-database

我构建聊天应用程序。我在每个用户表中都有字段,允许检查用户是否在线。我只使用数据库引用来获取 isOnline 状态并在下拉刷新时更新它。我看到当用户打开或折叠应用程序时,应用程序会自动更新在线状态。我该怎么做?我是否需要任何监听器或任何框架可以帮助我升级我的代码))像 ReactiveCocoa/ReactiveSwift...

P.S 抱歉 isOnline 字段上的西里尔文本)它表示在线/离线 enter image description here

最佳答案

当应用程序启动时,您可以在 AppDelegate 中在线更新用户

在线更新用户

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()
        // status parameter indicate user Online
        if Auth.auth().currentUser != nil {
            OnlineOfflineService.online(for: (Auth.auth().currentUser?.uid)!, status: true){ (success) in

                print("User ==>", success)

            }
        }
        return true
    }

离线更新用户

func applicationWillTerminate(_ application: UIApplication) {
        if Auth.auth().currentUser != nil {
            OnlineOfflineService.online(for: (Auth.auth().currentUser?.uid)!, status: false){ (success) in

                print("User ==>", success)
            }
        }
 }

Firebase 线上线下更新服务

import UIKit
import FirebaseDatabase

struct OnlineOfflineService {
    static func online(for uid: String, status: Bool, success: @escaping (Bool) -> Void) {
        //True == Online, False == Offline
        let onlinesRef = Database.database().reference().child(uid).child("isOnline")
        onlinesRef.setValue(status) {(error, _ ) in

            if let error = error {
                assertionFailure(error.localizedDescription)
                success(false)
            }
            success(true)
        }
    }
}

您还需要注意用户网络连接。如果用户网络连接关闭,您只需调用带有参数的 OnlineOfflineService

关于Swift 4 Firebase 在线状态更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50213517/

相关文章:

javascript - 限制Firebase中的有序列表

javascript - 如何在 HTML 表格上显示带有多级键的 Firebase 数据?

ios - 未调用 Swift func didBeginContact

ios - 如何在 Swift 3 中编写键盘通知

node.js - 如何用nodejs进行动态调度?

firebase - 如何使用datetimepicker计算年龄?

"For Loop"内的 Swift 4 Firebase 存储图像下载

swift - 没有这样的模块锁匠

ios - NSURLSession 和图像缓存

node.js - 在 Firebase 函数和 React 之间共享代码