ios - 根据在 firebase 数据库中找到的值设置开关

标签 ios swift firebase

我想检查当前用户 onlineOfflineStatus 的 firebase,它将返回“在线”或“离线”,然后当他们登录时,开关设置到正确的位置,就像他们注销时一样设置为离线意味着当重新登录时离线,虽然我不太明白?

let switchControl: UISwitch


func setLeftNavButton() {

    var switchControl=UISwitch()
    switchControl = self.switchControl
    switchControl.isOn = true
    switchControl.setOn(true, animated: false)
    switchControl.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)
    self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(customView: switchControl)

}



func setSwitch(){

    let online = "Online"
    let offline = "offline"

    if currentUser?.onlineOfflineStatus == online {

        self.switchControl.isOn


    } else {

        if currentUser?.onlineOfflineStatus == offline

        self.switchControl.offline


    }


}

最佳答案

您可以监听连接状态。

根据文档: https://firebase.google.com/docs/database/ios/offline-capabilities#section-connection-state

let connectedRef = Database.database().reference(withPath: ".info/connected")
connectedRef.observe(.value, with: { snapshot in
  if snapshot.value as? Bool ?? false {
    UserDefaults.standard.set(true, forKey: "current_user_is_connected")
  } else {
    UserDefaults.standard.set(false, forKey: "current_user_is_connected")
  }
})

更新您的代码:

func setSwitch(){

    if UserDefaults.standard.bool(forKey: "current_user_is_connected") {
        self.switchControl.isOn = true
    } else {
        self.switchControl.isOn = false
    }
}

关于ios - 根据在 firebase 数据库中找到的值设置开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46984933/

相关文章:

ios - UI 单元测试卡在 "Waiting for accessibility to load"

iOS:在 Swift3 中,在我的 collectionView 中,当我向下滚动时,collectionView 自动出现在顶部。如何阻止它?

android - 检查用户在当前 session 中使用了哪种身份验证方法

javascript - 在vuex中从firebase读取数据

ios - 是否可以在运行时使用不同的 FirebaseOptions 重新配置 FirebaseApp,以记录 Analytics 事件?

iphone - 将来自不同 imageView 的两个图像合并到 iPhone 中的单个图像中

ios - 将文件保存在应用程序文件夹内

iphone - 将委托(delegate)添加到自定义 UITableView

swift - 实现与 URLSession 发布者和组合的重新连接

ios - 可以在 iOS 中读取 protected NFC 标签吗?