Geo*_*nts 1 firebase swift firebase-realtime-database
我构建聊天应用程序。我在每个用户表中都有一个字段,可以检查用户是否在线。我仅使用数据库引用来获取isOnline状态并在拉动刷新时更新它。我看到当用户打开或折叠应用程序时,应用程序会自动更新在线状态。我怎样才能做到这一点?我是否需要任何侦听器或任何框架可以帮助我升级我的代码))像 ReactiveCocoa/ReactiveSwift 这样的东西...
当应用程序启动时,您可以在 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
}
Run Code Online (Sandbox Code Playgroud)
更新用户离线
func applicationWillTerminate(_ application: UIApplication) {
if Auth.auth().currentUser != nil {
OnlineOfflineService.online(for: (Auth.auth().currentUser?.uid)!, status: false){ (success) in
print("User ==>", success)
}
}
}
Run Code Online (Sandbox Code Playgroud)
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还需要注意用户网络连接。如果用户网络连接关闭,您只需使用OnlineOfflineService参数调用
| 归档时间: |
|
| 查看次数: |
3591 次 |
| 最近记录: |