Swift - Firebase 使用相同的键添加多个值

Swift - Firebase add multiple value with same key

我正在尝试收集用户的 OneSignalID。 以下代码为每个用户添加一个 playerID。 当同一用户使用不同的设备登录时,playerID会更新。

    let status : OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
    let oneSignalUser = status.subscriptionStatus.userId

    if oneSignalUser != nil {
        let aUser = Auth.auth().currentUser!

        let post = ["playerID": oneSignalUser!] as [String: Any]
        Database.database().reference().child("usersToOneSignal").child(aUser.uid).setValue(post)
    }

我希望每个用户都被添加到每个设备。 所以我想在密钥 "kwvZPH......" 下有多个 playerID(这是 FireBase UserKey)。 我该怎么做?

您可以通过将 OneSignal ID 保存为键而不是值来实现您想要的。然后 playerID 不会在登录到新设备时被覆盖。值无所谓,只要存在即可(我会设置成true)。

let status : OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
let oneSignalUserID = status.subscriptionStatus.userId

if oneSignalUser != nil {
    let aUser = Auth.auth().currentUser!

    // get the original path you were using
    let originalPath = Database.database().reference().child("usersToOneSignal").child(aUser.uid)
    // set `true` at the OneSignal key in the database
    originalPath.child(oneSignalUserID!).setValue(true)
}

会给出一个数据库:

- usersToOneSignal
     |
     | - kwzphiusgdfoiaudbksdhf763truygi
       |
       | - 4e762345-76654afedc-65342287fc-57635472: true
       | - 7645736-efcab873465-7635476823f-ab62354: true 

显然,您需要更改检索值的方式。