FCM тема сообщений для пользователя или бизнеса - PullRequest
0 голосов
/ 10 июня 2019

Моя цель - разрешить пользователям "подписываться" на другого пользователя / компанию в моем приложении, чтобы все их подписчики могли получать уведомления, когда им нужно узнать что-то, например, о новом сообщении. Я отправляю уведомления с помощью Firebase Cloud Functions.

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

Примечание. У меня уже настроены push-уведомления, и я успешно отправляю их для таких вещей, как сообщения.

//here i am subscribing to the user when they accept the request

  exports.friendRequestAccepted = functions.database.ref('/friends/{pendingFriend}/{requester}')
  .onUpdate((change, context) => {
    const pendingFriend = context.params.pendingFriend;
    const requester = context.params.requester;

    const ref = admin.database().ref(`users/${requester}/notificationTokens`);
    return ref.once("value", function(snapshot){
        const payload = {
              notification: {
                  title: 'You have a new Connection',
                  body: 'Somebody has accepted your connection request. Who could that be?'
              }
        };

        admin.messaging().sendToDevice(snapshot.val(), payload)
        // Subscribe the devices corresponding to the registration tokens to the
        // topic.
        admin.messaging().subscribeToTopic(pendingFriend)
          .then(function(response) {
            // See the MessagingTopicManagementResponse reference documentation
            // for the contents of response.
            console.log('Successfully subscribed to topic:', response);
          })
          .catch(function(error) {
            console.log('Error subscribing to topic:', error);
          });


    }, function (errorObject) {
        console.log("The read failed: " + errorObject.code);
    });
  })




//here i am trying to send the topic notification when a post is added...  

    exports.newPostNotification = functions.database.ref('/categories/{newPost}/')
        .onCreate((snapshot, context) => {
          // Grab the current value of what was written to the Realtime Database.
          const original = snapshot.val();
          console.log('informing for', context.params.newPost, original);
          // You must return a Promise when performing asynchronous tasks inside a Functions such as
          // writing to the Firebase Realtime Database.
          // Setting an "uppercase" sibling in the Realtime Database returns a Promise.
          const payload = {
            notification: {
                title: 'New Post from user',
                body: 'blah blah blah',
            },
        };

          return admin.messaging().sendToTopic(original.userUid, payload)
            .then(function(response) {
              console.log("Successfully sent message:", response);
            })
            .catch(function(error) {
              console.log("Error sending message:", error);
            });    
          });

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

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

Ура!

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