Что это за ошибка, которую я получаю, когда пытаюсь добавить звук уведомления в мое уведомление pu sh? - PullRequest
3 голосов
/ 10 февраля 2020

Впервые после просмотра этого видео я включил уведомления pu sh в мое приложение Cloud Firestore Chat. Однако при поступлении уведомления у него не было звука. Когда я попытался добавить аудио после следующего этого документа , чтобы уведомление pu sh сопровождалось звуком уведомления, я получил следующую ошибку из журнала функции Firebase после развертывания.

Ошибка: получено недопустимое значение JSON. Неизвестное имя «звук» в «message.notification»: не удается найти поле. в FirebaseMessagingError.FirebaseError [как конструктор] (/srv/node_modules/firebase-admin/lib/utils/error.js:42:28) в FirebaseMessagingError.PrefixedFirebaseError [как конструктор] / / srv lib / utils / error. js: 88: 28) в новом FirebaseMessagingError (/srv/node_modules/firebase-admin/lib/utils/error.js:254:16) в Function.FirebaseMessagingError.fromServerError (/ srv /node_modules/firebase-admin/lib/utils/error.js:287:16) в Object.createFirebaseError (/srv/node_modules/firebase-admin/lib/messaging/messaging-errors.js:34:47 в *

Это код, который я развертываю

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotificationToFCMToken = functions.firestore.document('messages/{mUid}').onWrite(async (event) => {
    const uid=event.after.get('UserId');
    const title = event.after.get('title');
    const content = event.after.get('content');
    let userDoc = await admin.firestore().doc(`users/${uid}`).get();
    let fcmToken = userDoc.get('TokenId')

    var message ={
        notification: {
            title: title,
            body: content,
            sound: "default"
        },
        token: fcmToken,
    }

    let response = await admin.messaging().send(message);
    console.log(response);
});

1 Ответ

3 голосов
/ 10 февраля 2020

Прежде всего, вы связали документацию для устаревшего API, но ваш message в JSON показывает, что вы фактически используете HTTP v1 API. Этот является правильным документом, на который следует ссылаться.

Я предполагаю, что вы не знаете о разнице между этими двумя понятиями, поскольку вы упомянули, что вы впервые внедряете уведомления.

В любом случае ваш код должен выглядеть примерно так, чтобы звук звучал вместе с уведомлением pu sh:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotificationToFCMToken = functions.firestore.document('messages/{mUid}').onWrite(async (event) => {
    const uid=event.after.get('UserId');
    const title = event.after.get('title');
    const content = event.after.get('content');
    let userDoc = await admin.firestore().doc(`users/${uid}`).get();
    let fcmToken = userDoc.get('TokenId')

    var message ={
        notification: {
            title: title,
            body: content,
        },
        android: {
            notification: {
                sound: "default"
            }
        },
        token: fcmToken,
    }

    let response = await admin.messaging().send(message);
    console.log(response);
});
...