Облачное хранилище: получение ключей динамического поля с помощью Javascript - PullRequest
0 голосов
/ 27 октября 2018

Я отправляю уведомление с помощью токена устройства с Cloud Firestore и Cloud Function. Теперь система будет хранить токен устройства, в который входит пользователь. Поскольку пользователь может иметь несколько устройств или войти в систему, используя другое устройство, все, что я хочу, - это отправить это уведомление этим устройствам, используя сохраненный токен устройства. Так выглядит документ пользователя, я сохраняю токены как вложенный объект.

{
name: "Frank Kemerut",
device_tokens: { 23qweq: "LG G6", Os23pk: "Samsung S6", asd231: "Samsung S9" },
age: 12
}

Теперь я хочу выполнить итерацию и получить все ключ и значение, а затем отправить уведомление на эти устройства, используя собранные токены. Как я собираюсь выполнить это? Это лучший подход?

1 Ответ

0 голосов
/ 27 октября 2018

ОК, это облачная функция, которая отправляет уведомление всем пользовательским устройствам, когда срабатывает событие пожарного депо.Предполагая, что у вас есть идентификатор пользователя в этом триггере из объекта события или другим способом.Эта функция будет использовать этот идентификатор для получения пользовательского документа из базы данных в зависимости от того, как вы его сохранили, затем получит токен уведомления и отправит его на все свои устройства в device_tokens map

export const sendEventNotification = functions.firestore.document('events/${eventId}')
    .onCreate((data, context) => {
        const userId = "someId"
        //Get the user document to get the notification tokens.
        return firestore.doc(`users/${userId}`).get().then((user) => {

            //dummy notification payload
            const payload = {
                data: {
                    event: JSON.stringify(data.data())
                }
            }

            //The device tokens mapped to device name.
            const device_tokens = user.data().device_tokens

            //Array of notification tokens that we will send a notification to.
            const promises = []
            Object.keys(device_tokens).forEach(token => {
                promises.push(admin.messaging().sendToDevice(token, payload))
            })

            return Promise.all(promises)
        }).catch((error) => {
            console.log(`Failed to send user notification. Error: ${error}`)
            return null
        })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...