使用离子Cordova功能+ Firebase发送推送通知

时间:2019-10-29 07:24:38

标签: android firebase ionic-framework cordova-plugin-fcm

此处的规范:使用Firebase推送通知

我可以获得注册令牌。然后,我尝试使用该令牌从Firebase测试通知模块发送通知。每次我在设备上运行应用程序时,都会收到警报-

“消息:onNotification回调已成功注册:确定”

但是当我尝试从App触发它时,它是行不通的。

但是没有调用第一个函数[我要在其中获取通知的函数]。我找不到我犯错的地方。

exports.requestNotifications = functions.database.ref('Notifications/{user_Id}/unread/{notificationId}').onWrite((change, context)=> {
    var user_Id  = context.params.user_Id;
    var notifyData = change.after.val();
    var sender_id = notifyData.Id
        var fromUserQueryName = admin.database().ref(`/users/${sender_id}/Name`).once('value');
        var userDeviceToken = admin.database().ref(`/users/${user_Id}/pushToken`).once('value');

        return Promise.all([fromUserQueryName, userDeviceToken]).then(result => {
              var fromUserDisplayName =  result[0].val();
              var userDisplayToken = result[1].val();

      const payload = {
        notification: {
          title: 'New Friend Request!',
          body: `${fromUserDisplayName} Sent You Request.`,
          icon: 'assets/imgs/chatme.png',
          sound: 'default' 
          }
         };
         return admin.messaging().sendToDevice(userDisplayToken, payload)
         .then(response => {
             console.log('Notification sent')
          })
          .catch(error => {
              console.log('Error sending Notification')
          })
        })
   // })
})
exports.conversationNotifications = functions.database.ref('Conversations/{user_Id}/{conversationId}').onWrite((change, context)=> {
     var user_Id = context.params.user_Id;
     var conversationId = context.params.conversationId;
     var messageData = change.after.val();


     var message = admin.database().ref(`/Conversations/${user_Id}/${conversationId}/message`).once('value');
     var senderId = admin.database().ref(`/Conversations/${user_Id}/${conversationId}/Id`).once('value');

      return Promise.all([message, senderId]).then(result => {
            var messageDisplay =  result[0].val();
            var senderIdDisplay = result[1].val();

         var fromUserQueryName = admin.database().ref(`/users/${senderIdDisplay}/Name`).once('value');
         var userDeviceToken = admin.database().ref(`/users/${user_Id}/pushToken`).once('value');

         return Promise.all([fromUserQueryName, userDeviceToken]).then(result => {
               var fromUserDisplayName =  result[0].val();
               var userDisplayToken = result[1].val();


      const payload = {
        notification: {
          title: fromUserDisplayName,
          body: messageDisplay,
          icon: 'assets/imgs/chatme.png',
          sound: 'default' 
          }
         };
         return admin.messaging().sendToDevice(userDisplayToken, payload)
         .then(response => {
             console.log('message sent')
          })
          .catch(error => {
              console.log('Error sending message')
          })
        })
    })
})


Send push notifications over phone

0 个答案:

没有答案