Navigation

Push Notifications (FCM)

MongoDB Stitch supports integrating mobile (Android and iOS) apps with the Firebase Cloud Messaging (FCM) service to provide push notifications. You configure and send notification messages from within the Stitch console, while clients register with FCM for messages sent to specific topics.

For a tutorial on integrating Push Notifications in an Android app, see Push Notifications (Android App).

Rule Templates

Notifications Must Have a Specific Title

{
  "%%args.notification.title": "Test Notification Please Ignore"
}

Notifications Must Be for a Specific Topic

{
  "%%args.to": "%%values.validTopics"
}

Notifications Can Only Be Sent To a Limited Set of User IDs

{
  "%%true": {
    "%function": {
      "name": "allUserIdsAreValid",
      "arguments": [
        "%%args.userIds"
      ]
    }
  }
}

Note

This template calls an example function named allUserIdsAreValid that does the following:

  1. Accepts the list of User IDs provided in the userIds argument
  2. Queries MongoDB for a user document that matches the current user’s id
  3. Compares the provided phone number to the number listed in the user document
  4. Returns the boolean result of the comparison
exports = function(toPhone) {
  const mdb = context.services.get('mongodb-atlas');
  const users = mdb.db('demo').collection('users');
  const user = users.findOne({ _id: context.user.id });
  return user.phoneNumber === toPhone;
}

Push Notification Rules

To specify rules for Push Notifications, click on the Rules tab on the Push Notifications page.

Note

Unlike other services in MongoDB Stitch, rules for push notifications are optional. By default, all push notifications are allowed. However, once you specify a rule, the restrictions imposed by that rule will take effect.

The following arguments are permitted in Push Notifications rules, and they can be accessed with the "%%args" expansion:

Field Type Description
userIds Array of strings. The user ids of the message recipients.
to String The send-to topic. The recipients are the users who have opted into the topic.
registrationTokens Array of strings. The list of registration tokens for the devices receiving the multicast message.
priority string The priority of the notification. Value is either "high" or "normal". Corresponds to the priority option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
collapseKey string The collapse key associated with collapsible messages. Corresponds to the collapse_key option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
contentAvailable boolean A flag that determines whether to awake idle client apps upon receipt of the message. Corresponds to the content_available option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
mutableContent boolean A flag that determines whether the notification content can be modified before being displayed to the user. Corresponds to the mutable_content option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
timeToLive int

Maximum time (in milliseconds) to retain the message if the device is offline. Valid value range from 0 to 2419200.

Corresponds to the time_to_live option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.

data JSON document Payload for data message. data document consists of custom key-value pairs. Corresponds to the data option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
notification JSON document Payload for notification. notification document consists of predefined fields. Corresponds to the notification option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.

Notification Document Fields

The following table lists the fields of the notification document that is available as a permitted field for Push Notifications rules. To access one of these fields in a rule, use "%%args.notification.<field>".

Field Type Description
title string The title of the notification. Corresponds to the title option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
body string The body of the notification. Corresponds to the body option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
sound string The sound to play upon receipt of the notification. Corresponds to the sound option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
clickAction string The action to take when a user click on the notification. Corresponds to the click_action option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
bodyLocKey string The key for localization of the body string. Corresponds to the body_loc_key option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
bodyLocArgs string The string values to replace format specifiers for localization in the body string. Corresponds to the body_loc_args option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
titleLocKey string The key for localization of the title string. Corresponds to the title_loc_key option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
titleLocArgs string The string values to replace format specifiers for localization in the title string. Corresponds to the title_loc_args option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
icon string For Android only. The notification icon. Corresponds to the icon option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
color string For Android only. Indicates the icon color in #rrggbb format. Corresponds to the color option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
tag string For Android only. If specification, each notification does not result in a new entry but replaces an existing entry with the specified tag. If unset, each notificaiton results in a new entry. Corresponds to the tag option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.
badge string For iOS only. The badge on client app home icon. Corresponds to the badge option for HTTP JSON messages via FCM. See the FCM HTTP protocol reference.