Send a Push notification to all devices having the same username
Through the following server-side javascript function you can notify via push notification the mobile app.
Syntax
var json = utils.sendPushNotification(
appId,
usernamesList,
title,
body,
actionIdToCall,
valueObject,
iOSBadgeCount
);
// the "json" result value is a String having the following format:
// [{...},...] with an element for each push notification sent (for each involved device id)
Example
var usersEmails = ["email1@gmail.com","email2@gmail.com","emailN@gmail.com"]; //an array of registered user email accounts
var appMobileId = "MINION"; //the mobile application id
var notificationTitle = "Hello!"; //notification title
var notificationBody = "How did the cat get so fat?"; //notification body
var actionIdToCall = 123; //[optional] mobile actionId to call on the notification click if necessary
var valueObject = {"field1":"value1","field2":"value2","fieldN":"valueN"}; //[optional] map of <String, String> to use in the action id if necessary
var iOSBadgeCount = 1; //Total count of notification
utils.sendPushNotification(appMobileId, usersEmails , notificationTitle, notificationBody, 123, JSON.stringify(valueObject), iOSBadgeCount);
When the push notification reaches the mobile application, it calls the optional actionId defined in the sendPushNotification injecting in the valueObject a parameter with the status of the push:
vo.notificationFieldStatus ="RECEIVED"
When the user clicks on the notification, the mobile app calls the optional actionId defined in the sendPushNotification injecting in the valueObject a parameter with the status of the push:
vo.notificationFieldStatus = "CLICKED"
This is an example of the optional actionIdToCall
if(vo.notificationStatus == "RECEIVED"){
//For example this will update the "ideas" menu badge count with the count of unread notifications
var unreadNotification = getUnreadNotificationsCount();
setMenuBadges("ideas",unreadNotification);
} else if(vo.notificationStatus == "CLICKED"){
//Reset the notification count
resetUnreadNotifications();
//update the "ideas" menu count
setMenuBadges("ideas",0);
//Open the window 39
var args = {
"param1":vo.field1,
"param2":vo.field2,
"paramN":vo.fieldN
};
openWindow39(args);
}
Send a Push notification to a single device
Through the following server-side javascript function you can notify via push notification a specific device where the mobile app has been installed.
Syntax
var json = utils.sendSinglePushNotification(
String appId,
String firebaseId,
String title,
String shortMessage,
Long actionId,
String json,
Long badgeNr,
Map rootOptions,
Map dataOptions,
Map notificationOptions //this is mandatory for iOs Device
);
// the "json" result value is a String having the following format:
// [{...}] with ONE OLNY element for the single push notification sent
Note that notificationOptions is mandatory for iOs Deice
Example
var firebaseId = "erwerhwejkrhwkjrhwjhkr"; // this is the value of CON45_DEVICES.FIREBASE_ID field for the specific device
var appMobileId = "MYAPP"; //the mobile application id
var notificationTitle = "Hello!"; //notification title
var notificationBody = "How did the cat get so fat?"; //notification body
var actionIdToCall = 123; //[optional] mobile actionId to call on the notification click if necessary
var valueObject = {"field1":"value1","field2":"value2","fieldN":"valueN"}; //[optional] map of <String, String> to use in the action id if necessary
var iOSBadgeCount = 1; //Total count of notification
var iOsNotification = {};
if(isiOsDevice){
//iOs need the notification info
iOsNotification = {
badge: iOSBadgeCount + "", //must be a string, 1 or 1.0 throw an error, "1" is ok
content_available: true,
sound: "Default",
title: notificatonTitle,
body: notificationBody
}
}
utils.sendSinglePushNotification(
appMobileId,
firebaseId,
notificationTitle,
notificationBody,
123,
JSON.stringify(valueObject),
iOSBadgeCount,
null,
null,
iOsNotification
);
If you need to get the firebaseId, you can just append this scriptlet at the beginning of the the previous one, where the input data is the device id:
var deviceId = "...";
var json = utils.executeQuery(
"SELECT FIREBASE_ID FROM CON45_SYNC_DEVICES WHERE APPLICATION_ID=? AND DEVICE_ID=?",
null,
false,
true,
[appMobileId,deviceId]
);
var list = JSON.parse(json);
if (list.length>0) {
var firebaseId = list[0].firebaseId;
// ...
}
When the push notification reaches the mobile application, it calls the optional actionId defined in the sendSinglePushNotification injecting in the valueObject a parameter with the status of the push:
vo.notificationFieldStatus ="RECEIVED"
When the user clicks on the notification, the mobile app calls the optional actionId defined in the sendSinglePushNotification injecting in the valueObject a parameter with the status of the push:
vo.notificationFieldStatus = "CLICKED"
This is an example of the optional actionIdToCall
if(vo.notificationStatus == "RECEIVED"){
//For example this will update the "ideas" menu badge count with the count of unread notifications
var unreadNotification = getUnreadNotificationsCount();
setMenuBadges("ideas",unreadNotification);
} else if(vo.notificationStatus == "CLICKED"){
//Reset the notification count
resetUnreadNotifications();
//update the "ideas" menu count
setMenuBadges("ideas",0);
//Open the window 39
var args = {
"param1":vo.field1,
"param2":vo.field2,
"paramN":vo.fieldN
};
openWindow39(args);
}
Mobile function
below some useful functions.
getUnreadNotificationsCount();
Returns the unread notifications count
setMenuBadges(menuFunctionId, count);
Sets the badge for the menu item by its functionId
resetUnreadNotifications();
Sets to zero the unread notifications count.
After this, the methodgetNotificationsCount()will return zero.
This method doesn’t update the menu item badge, you have to call
setNotificationBadge
If the type of menu includes the badge with the number of notifications, update the number of notifications