Облачная функция для отправки уведомления возвращает с успешным результатом, но оно не получено - PullRequest
0 голосов
/ 10 ноября 2019

РЕДАКТИРОВАТЬ: проверяя журналы моего клиентского приложения, я вижу, что сообщение действительно получено, но уведомление не отправляется независимо от того, находится ли оно на переднем плане или на заднем плане (где при использовании консоли оно показывает pushУведомление).

Я следовал документации и все реализовал. Когда я пытаюсь отправить сообщение в тему из консоли Cloud Messaging в Firebase, он работает просто отлично, но когда я пытаюсь отправить его с помощью облачной функции, он возвращает успешный результат, но клиент никогда не получает уведомление.

Вот моя облачная функция. Он используется для информирования владельца ресторана о новых бронированиях:

function sendNotification(businessID: string, partySize : number, arrivalTime : string){


    const message = {
      data: {
        content: 'New reservation for '+ partySize + 'people arriving at ' + arrivalTime
      },
      topic: businessID
    };

    // Send a message to devices subscribed to the provided topic.
    return admin.messaging().send(message)
      .then((response) => {
        // Response is a message ID string.
        console.log('Successfully sent message:', response);
      })
      .catch((error) => {
        console.log('Error sending message:', error);
      });

} 

Эта функция вызывается при создании нового бронирования, сформируйте этого слушателя:

exports.newReservation = functions.firestore.document('claimed_deals/{claimedDealID}').onCreate((snap, context) => {
    const newReservationDoc = snap.data();

    if (newClaimedDeal !== undefined) {
        const userID = newReservationDoc .customer_ID;
        const dealID = newReservationDoc .deal_ID;

        const promises: any = [];

        //other promises

        promises.push(sendNotification(newReservationDoc .business_ID, newReservationDoc.customer_party_size, newReservationDoc.arrivalTime));

        return Promise.all(promises);
    } else {
        return null;
    };

});

Так что я продолжаю получать этот журналSuccessfully sent message... но в клиентском приложении ничего не появляется. Когда я пытаюсь сделать это вручную из консоли, в тот же ресторан, я получаю уведомление без проблем. То же самое касается других ресторанов. Что я не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...