Ionic App не получает уведомления только от консоли Firebase - PullRequest
0 голосов
/ 15 апреля 2019

Приложение 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);



?>

Я изо всех сил, пожалуйста, помогите!

...