I am using FIREBASE CLOUD MESSAGING service with my ionic product and phonegap-plugin-push cordova plugin to get push notification from PHP BACK END.
When I am trying to get push notification then php end is getting result with success as below.
Sample Push Data Payload
{"multicast_id":8853634389214913500,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1495614850271706%39688dd8f9fd7ecd"}]}
Technology specification :
cordova push notification plugin version :1.9.4
Platform and Version: Ionic V1
Ionic CLI version : 2.1.13
Cordova version : cordova --6.4.0
Android platform for cordova :6.0.0
Android) What device vendor I have tested : Samsung, HUWAWEI, Xiaomi etc.
Sample Code that illustrates the problem as below
IONIC PART:
//Push Notification if (window.cordova) { if (!localStorage.getItem('device_token')) { var apkId = 0; var iosId = 0; var options = { android: { senderID: MY FCM SENDER ID, icon: "alert", }, ios: { alert: "true", badge: "true", sound: "true" }, windows: {} };
//localStorage.getItem('gcmRegId') // initialize $cordovaPushV5.initialize(options).then(function () { // start listening for new notifications $cordovaPushV5.onNotification(); // start listening for errors $cordovaPushV5.onError(); // register to get registrationId $cordovaPushV5.register().then(function (data) { //alert("GCM"+data); // if Android device. if (ionic.Platform.isAndroid()) { apkId = data; } // if ios device. if (ionic.Platform.isIOS()) { iosId = data; } // Updating member details with apkId or iosId var pushParams = { 'app_token': Config.appToken, 'device_uiu_token': device.uuid, 'apk_token': apkId, 'ios_token': iosId } $http.post(Config.apiUrl + "member/save_token", pushParams) .success(function (data) { if (data.status == 200) { localStorage.setItem("device_token", device.uuid); } /* else{ alert("Sorry!Error occurs!"); } */ }); }) // Updating end. }); // triggered every time notification received $rootScope.$on('$cordovaPushV5:notificationReceived', function (event, data) { alert("recieved" + JSON.stringify(data)); // data.message, // data.title, // data.count, // data.sound, // data.image, // data.additionalData }); // triggered every time error occurs $rootScope.$on('$cordovaPushV5:errorOcurred', function (event, e) { alert('push ERROR' + e.message); // e.message });
// push notification end
PHP PART:
$push_title = $this->input->post('push_title');
$push_msg = $this->input->post('push_msg');
$members = $this->members_model->get_members();
$apk_tokens = array();
$ios_tokens = array();
foreach ($members as $member) {
if ($member['apk_token'] != 0 || $member['apk_token'] != "") {
array_push($apk_tokens, $member['apk_token']);
}
if ($member['ios_token'] != 0 || $member['ios_token'] != "") {
array_push($ios_tokens, $member['ios_token']);
}
}
//Sending the push notification using GCM.
$msg = array(
'message' => $push_msg,
'title' => $push_title,
'vibrate' => 1,
'sound' => 1,
'largeIcon' => 'large_icon',
'smallIcon' => 'small_icon',
);
$fields = array
(
'registration_ids' => $apk_tokens,
'data' => $msg,
'priority' => 'high'
);
$headers = array
(
'Authorization: MY FCM SERVER KEY',
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Thanks in advance!