Push Notification Sender
Environment Variables
The service requires the following environment variables:
CONFIG_FILE_PATH
: the path where the configuration file is mounted
Configuration File
The service requires a configuration file in JSON format with the following fields:
sendersInitOptions
: object, specifies the configuration for Android and iOS senders. It has the following fields:android
: object, specifies the configuration for Android sender. It has the following fields:key
: string, the Firebase key for sending Android notifications
ios
: object, specifies the configuration for iOS sender. This object is passed directly to the APN Provider. So you can specify the options listed here.
collectionsOptions
: object, specifies the configuration of the CRUD collection used by the service. It has the following fields:notificationsCollectionsPath
: path to thenotifications
CRUD collectiondevicesCollectionPath
: path to thedevices
CRUD collectionusersCollectionPath
: path to theusers
CRUD collectionbufferSize
: maximum number of notifications to be sent a once
An example of configuration file is the following:
{
"sendersInitOptions": {
"ios": {
"cert": "/home/node/app/config/cert.pem",
"key": "/home/node/app/config/key.pem",
"production": true,
"defaultTopic": "{{IOS_PUSH_NOTIFICATION_TOPIC}}"
},
"mock": {},
"android": {
"key": "{{NOTIFICATIONS_ANDROID_KEY}}"
}
},
"collectionsOptions": {
"devicesCollectionPath": "/devices/",
"notificationsCollectionsPath": "/notifications/",
"usersCollectionPath": "/users/",
"bufferSize": 5000
}
}
In the case above, you must mount the cert.pem
and key.pem
files of the iOS certificates at the paths indicated in the configuration file.
CRUD Collections
The service is based on two CRUD
collections: devices
and notifications
An additional users
collection is needed for /groups
route to work.
Here you can see how to create a CRUD collection from Mia-Platform Console.
Devices
This collection contains the registered devices, a document containing the registration token (so there may be multiple documents for each user). This collection should not be used directly by clients, who have authenticated registration APIs! The properties are as follows:
userId
: string or ObjectId, reference to the user who has registeredtoken
: string, the token ios or android that identifies the device and the apptags
: list of strings, marks of users interested in topics or grouped as a group of usersplatform
: string, the platform of the deviceandroid
,ios
,mock
(case-sensitive!)
Notifications
This collection keeps the history of notifications sent. Property:
title
: string, the title independent from the platformbody
: string, the message independent of the platformpayload
: the custom payload independent from the platformplatformSpecificContent
: object, notification customizations depending on the platformdestination
: object, a descriptor that contains the typetype
of the destination and the list of recipientsoutcome
: object, the result of sending the notification
Users
This collection will be only used by /groups
route. It contains users' data.
This collection must have property groups
, an array of strings: it represents the groups a user belongs to.
This service will send notifications to groups by collecting the ids of users belonging to groups specified as input.