Push-уведомление Firebase не работает Получить номер токена, но все еще не работает - PullRequest
0 голосов
/ 04 февраля 2019

Я использую firebase для отправки push-уведомлений.Он работал нормально со старым именем пакета, недавно я изменил имя пакета моего приложения, позже уведомление не работает, снова я зарегистрировал новое имя пакета с помощью firebase и добавил новый файл google-services.json в папку приложения, и я также получаю номер токена, но уведомлениене отправляет на мобильный.

 <?php 
//Getting api key 
$api_key = 'api_key'; 

//Getting registration token we have to make it as array 
$token = 'token_number';
$reg_token = array($token);

//Getting the message 
$message = 'Test Message Success!!';

//Creating a message array 
$msg = array
(
    'message' => $message,
    'title' => 'Test Message',
    'subtitle' => 'Android Push Notification using FCM Demo',
    'tickerText' => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate' => 1,
    'sound' => 1,
    'largeIcon' => 'large_icon',
    'smallIcon' => 'small_icon'
);

//Creating a new array fileds and adding the msg array and registration token array here 
$fields = array
(
    'registration_ids' => $reg_token,
    'data' => $msg
);

//Adding the api key in one more array header 
$headers = array
(
    'Authorization: key=' . $api_key,
    'Content-Type: application/json'
); 

//Using curl to perform http request 
$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 ) );

//Getting the result 
$result = curl_exec($ch );
curl_close( $ch );

//Decoding json from result 
// $res = json_decode($result);


//Getting value from success 
// $flag = $res->success;
?>

И результат json:

{"multicast_id": 6575432603807598829, "success": 1, "fail": 0, "canonical_ids": 0,"results": [{"message_id": "0: 1549340761166996% 1ca91b70f9fd7ecd"}]}

Уведомление не отправляется, и я пробовал в облачном сообщении firebase -> раздел уведомлений также там тоже не работает.

1 Ответ

0 голосов
/ 20 февраля 2019

Попробуйте это

$url = 'https://fcm.googleapis.com/fcm/send';

$fields = array (
        'registration_ids' => $ids,
         // fix new json format
        'notification' => array(
            'body' => 'Test message :)',
            'title' => 'Test',
        )

);

$fields = json_encode($fields);

$server_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
// inherited key

$headers = array(
    'Content-Type:application/json',
    'Authorization:key='.$server_key
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result = curl_exec($ch);

var_dump($result);

if ($result === FALSE) {
    die('Oops! FCM Send Error: ' . curl_error($ch));
}

curl_close($ch);
...