Приложение Ionic, созданное с помощью push-плагина phonegap, получает уведомления только при отправке с консоли Firebase, но не со стороны веб-сервера.Это действительно бесит, когда я пытался решить проблему 2 недели, но пока не могу найти решение.Я думаю, что приложение и плагин работают нормально, но с веб-сервером что-то не так.
Файл приложения JS:
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
const push = PushNotification.init({
android: {
senderID: "XXXXXXXX",
forceShow: true,
iconColor: "#4b84e6"
},
ios: {
alert: true,
badge: true,
sound: true
},
windows: {}
});
push.on('registration', function(data) {
var platform = $cordovaDevice.getPlatform();
var pdata={
'uuid': $cordovaDevice.getUUID(),
'model': $cordovaDevice.getModel(),
'token': data.registrationId,
'platform': platform
};
$http({
method: 'POST',
url: "https://example.com/registerPush.php",
data: $.param(pdata),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(res){
console.log("Register success: ");
console.log(res);
}).error(function(err){
console.log("Register fail: ");
console.log(err);
});
});
pushcallback = function(data) {
console.log(data.message);
console.log(data.title);
console.log(data.count);
console.log(data.sound);
console.log(data.image);
console.log(data.additionalData);
handleNotification(data.message,"Hello World");
};
push.on('notification', pushcallback);
push.on('error', function(e) {
console.log('error push');
console.log(e.message);
});
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
Предоставляем вам доступ к серверу RegisterPush.php для проверки соединения.
<?php
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');
require_once('constants.php');
$token=$_POST['token'];
$platform=$_POST['platform'];
$uuid=$_POST['uuid'];
$model=$_POST['model'];
$enable=$_POST['enable'];
$recent=date("Y-m-d H:i:s");
if(!isset($model))
$model="not_set";
if(!isset($token)){
echo "error: ".$_POST['token'];
exit();
}
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
if (strtolower($platform) == "android") {
$query="DELETE from users_android where uuid='$uuid' and model='$model;";
} else {
$query="DELETE from users_ios where uuid='$uuid' and model='$model;";
}
mysqli_query($con,$query);
$query = "SELECT * FROM `fcm_push` WHERE token='".$token."'";
$result= mysqli_query($con,$query);
$cnt = mysqli_num_rows($result);
if ($cnt == 0) {
$query = "INSERT INTO `fcm_push` (token, platform) VALUES('".$token."', '".$platform."')";
mysqli_query($con,$query);
$arr = array('result' => 'Added');
} else {
$arr = array('result' => 'Already registered');
}
mysqli_close($con);
echo json_encode($arr);
?>
Я изо всех сил, пожалуйста, помогите!