我可以从Firebase云功能发送静音推送通知吗?

时间:2017-09-05 15:37:28

标签: ios firebase firebase-cloud-messaging google-cloud-functions

是否可以从Firebase Cloud Function发送静默APN(iOS)远程通知?如果是这样,怎么办呢?我想在应用不在前台时向iOS应用实例发送数据,而无需用户看到通知。

我目前发送了一条用户可以看到的通知:

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

exports.sendNotifications = functions.database.ref('/events/{pushId}').onWrite(event => {
  const id = event.params.pushId

  const payload = {
    notification: {
      title: 'An event has occurred!',
      body: 'Please respond to this event.',
      event_id: id
    }
  };

  return admin.messaging().sendToTopic("events", payload);
});

我希望能够在没有视觉通知的情况下将id发送到应用程序。

2 个答案:

答案 0 :(得分:9)

我想出了如何修改我的代码以成功发送静默通知。我的问题是,我一直试图将content_available放在payload中,当它真的应该在options时。这是我的新代码:

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

exports.sendNotifications = functions.database.ref('/events/{pushId}').onWrite(event => {
  const id = event.params.pushId

  const payload = {
    data: {
      title: 'An event has occurred!',
      body: 'Please respond to this event.',
      event_id: id
    }
  };

  const options = {
    content_available: true
  }

  return admin.messaging().sendToTopic("events", payload, options);
});

在实施application:didReceiveRemoteNotification:fetchCompletionHandleruserNotificationCenter:willPresent:withCompletionHandler后,我在iOS设备上成功收到了无声通知。

答案 1 :(得分:-3)

如果您正在谈论APN通知,答案是:不,您无法在没有可视化的情况下发送通知。您只能禁用声音。但是,您可以在没有可视化的情况下传递FCM数据消息。您可以在此处阅读:https://firebase.google.com/docs/cloud-messaging/concept-options

 {  
   "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "data" : {
     "Nick" : "Mario",
     "body" : "great match!",
     "Room" : "PortugalVSDenmark"
   }
}