Listen for New Push Notifications while App is Active
While app is open, you may need to track, if there is new push;
To do so, set listener using FirebasePlugin.onMessageReceived
function;
import { FirebasePlugin } from 'cordova-plugin-reteno-firebase';
function onDeviceReady() {
// Prompt user for push subscription
FirebasePlugin.onMessageReceived(function(message) {
try{
console.log("onMessageReceived");
console.dir(message);
if(message.messageType === "notification"){
handleNotificationMessage(message);
}else{
handleDataMessage(message);
}
}catch(e){
logError("Exception in onMessageReceived callback: "+e.message);
}
}, function(error) {
logError("Failed receiving FirebasePlugin message", error);
});
FirebasePlugin.onTokenRefresh(function(token){
log("Token refreshed: " + token)
}, function(error) {
logError("Failed to refresh token", error);
});
if(cordova.platformId === "android"){
initAndroid();
}else if(cordova.platformId === "ios"){
initIos();
}
}
// In this example, we'll prompt the user as soon as the 'deviceready' event is fired
// There's good chances you'll find a more suitable moment in the user journey
document.addEventListener('deviceready', onDeviceReady);
var initIos = function(){
FirebasePlugin.onApnsTokenReceived(function(token){
log("APNS token received: " + token)
}, function(error) {
logError("Failed to receive APNS token", error);
});
FirebasePlugin.registerInstallationIdChangeListener(function(installationId){
log("Installation ID changed - new ID: " + installationId);
});
FirebasePlugin.registerApplicationDidBecomeActiveListener(function(){
log("Application did become active");
});
FirebasePlugin.registerApplicationDidEnterBackgroundListener(function(){
log("Application did enter background");
});
};
var initAndroid = function(){
// Define custom channel - all keys are except 'id' are optional.
var customChannel = {
// channel ID - must be unique per app package
id: "my_channel_id",
// Channel name. Default: empty string
name: "My channel name",
//The sound to play once a push comes. Default value: 'default'
//Values allowed:
//'default' - plays the default notification sound
//'ringtone' - plays the currently set ringtone
//filename - the filename of the sound file located in '/res/raw' without file extension (mysound.mp3 -> mysound)
sound: "blackberry",
//Vibrate on new notification. Default value: true
//Possible values:
//Boolean - vibrate or not
//Array - vibration pattern - e.g. [500, 200, 500] - milliseconds vibrate, milliseconds pause, vibrate, pause, etc.
vibration: [300, 200, 300],
// Whether to blink the LED
light: true,
//LED color in ARGB format - this example BLUE color. If set to -1, light color will be default. Default value: -1.
lightColor: "0xFF0000FF",
//Importance - integer from 0 to 4. Default value: 3
//0 - none - no sound, does not show in the shade
//1 - min - no sound, only shows in the shade, below the fold
//2 - low - no sound, shows in the shade, and potentially in the status bar
//3 - default - shows everywhere, makes noise, but does not visually intrude
//4 - high - shows everywhere, makes noise and peeks
importance: 4,
//Show badge over app icon when non handled pushes are present. Default value: true
badge: true,
//Show message on locked screen. Default value: 1
//Possible values (default 1):
//-1 - secret - Do not reveal any part of the notification on a secure lockscreen.
//0 - private - Show the notification on all lockscreens, but conceal sensitive or private information on secure lockscreens.
//1 - public - Show the notification in its entirety on all lockscreens.
visibility: 1
};
FirebasePlugin.createChannel(customChannel,
function() {
log("Created custom channel: "+customChannel.id);
FirebasePlugin.listChannels(
function(channels) {
if(typeof channels == "undefined") return;
for(var i=0;i<channels.length;i++) {
log("Channel id=" + channels[i].id + "; name=" + channels[i].name);
}
},
function(error) {
logError('List channels error: ' + error);
}
);
},
function(error) {
logError("Create channel error", error);
}
);
};