получение MismatchSenderId с серверной частью Firebase

Я пытаюсь отправить уведомление с помощью php-скрипта, который хранится на моем сервере, и я получаю MismatchSenderId.

$to="device_id";
$title="MYAPP Push";
$message=" MYAPP Push Notification Message";

sendPush($to,$title,$message);

function sendPush($to,$title,$message){
// API access key from Google API's Console
// replace API
define( "API_ACCESS_KEY", "server_key_provided_by_firebase");

$registrationIds = array($to);

$msg = array(
'message' => $message,
'title' => $title,
'vibrate' => 1,
'sound' => 1
// you can also add images, additionalData
);

$fields = array(
'registration_ids' => $registrationIds,
'data' => $msg
);

$headers = array(
'Authorization: key=' . API_ACCESS_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;
}

Вот ошибка, которую я получаю, когда запускаю скрипт php:
{"multicast_id":7804476702639319453,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

Я проверил каждый вопрос здесь в stackoverflow и не смог решить его.

Я использую Firebase (Spark Plan) и разрабатываю приложение с PhoneGap. Я считаю, что это не имеет ничего общего с приложением

Есть идеи???

0

Решение

Скопируйте файл google-service.json в корневую папку (которая содержит www, config.xml и т. Д.).

Шаг 1:
Войдите в свою консоль Firebase.

введите описание изображения здесь

Шаг 2:
В настройках обзора проекта скопируйте Cloud Messaging ServerKey

Мой ключ ex:

`AAAAjXzVMKY:APA91bED4d53RX.....bla bla

Шаг 3:
Заменить ключ

define( "API_ACCESS_KEY", "My key");

Наконец-то протестируй приложение: D

Я успешно отправил push-уведомление через узел.

var gcm = require('node-gcm');

// Replace these with your own values.
var apiKey = "MY_SERVER_KEY";
var deviceID = "MY_DEVICE_ID";

var service = new gcm.Sender(apiKey);
var message = new gcm.Message();
message.addData('title', 'Hi');
message.addData('body', 'BLA BLA BLA BLA');
message.addData('actions', [
{ "icon": "accept", "title": "Accept", "callback": "app.accept"},
{ "icon": "reject", "title": "Reject", "callback": "app.reject"},
]);

service.send(message, { registrationTokens: [ deviceID ] }, function (err, response) {
if(err) console.error(err);
else 	console.log(response);
});
1

Другие решения

документация для этой ошибки состояния:

Регистрационный токен привязан к определенной группе отправителей. Когда
клиентское приложение регистрируется для FCM, оно должно указывать, какие отправители
разрешено отправлять сообщения. Вы должны использовать один из этих идентификаторов отправителя, когда
отправка сообщений клиентскому приложению. Если вы переключитесь на другой
отправитель, существующие регистрационные токены не будут работать.

Вы должны дважды проверить, что вы используете ключ сервера из того же проекта, который использовался для создания google-services.json файл, с которым было создано приложение. project_number на вершине google-services.json файл должен совпадать с идентификатором отправителя, указанным на вкладке «Настройки облачного обмена сообщениями» в консоли Firebase.

0

По вопросам рекламы [email protected]