Я пытаюсь отправить уведомление с помощью php в приложение Android, и оно отлично работает без звука. Я получаю уведомление как на переднем плане, так и на заднем плане, как и ожидалось.
Вот код PHP,
<?php
$token = $_GET['token'];
$action = $_GET['action'];
$msgTitle = $_GET['msgTitle'];
$msgDescription = $_GET['msgDescription'];
$notificationTitle = $_GET['notificationTitle'];
require './google-api-php-client-2.2.2/vendor/autoload.php';
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setAuthConfig('./testPrjoectAPP-firebase-adminsdk-9hn21-22c1b3f426.json');
$client->addScope('https://www.googleapis.com/auth/firebase.messaging');
$httpClient = $client->authorize();
$project = "testPrjoectAPP";
$message = [
"message" => [
"notification" => [
"body" => "Message FCM",
"title" => $notificationTitle
],
"token" => $token,
"data" => [
"action" => $action,
"msgTitle" => $msgTitle,
"msgDescription" => $msgDescription
]
]
];
$response = $httpClient->post("https://fcm.googleapis.com/v1/projects/{$project}/messages:send", ['json' => $message]);
echo$response->getReasonPhrase(); // OK
?>
Но когда я добавляю звуковой параметр в полезную нагрузку уведомления и выполняю php, я получаю ошибку Bad Request от php.
.
$message = [
"message" => [
"notification" => [
"body" => "Message FCM",
"title" => $notificationTitle,
"sound" => "default"
],
// Send with token is not working
"token" => $token,
"data" => [
"action" => $action,
"msgTitle" => $msgTitle,
"msgDescription" => $msgDescription
]
]
];
Редактировать
Вот сообщение об ошибке, которое я получил при печати с
data: "{\n \"error\": {\n \"code\": 400,\n \"message\": \"Invalid JSON payload received. Unknown name \\\"sound\\\" at 'message.notification': Cannot find field.\",\n \"status\": \"INVALID_ARGUMENT\",\n \"details\": [\n {\n \"@type\": \"type.googleapis.com/google.rpc.BadRequest\",\n \"fieldViolations\": [\n {\n \"field\": \"message.notification\",\n \"description\": \"Invalid JSON payload received. Unknown name \\\"sound\\\" at 'message.notification': Cannot find field.\"\n }\n ]\n }\n ]\n }\n}\n"
Может быть тебе стоит попробовать. : github.com/fechanique/cordova-plugin-fcm/issues/… Я думаю у вас БОЛЬШОЙ КРОНШТЕЙН - проблема как массив. Возможно, вам придется передать объект как {}.






Попробуй это:
{
"message":{
"token":"your-token-value",
"notification":{
"title":"Test",
"body":"Test message from server"
},
"android":{
"notification":{
"sound":"default"
}
},
"apns":{
"payload":{
"sound":"default"
}
}
}
}
Согласно моему комментарию, вы должны использовать свой JSON следующим образом.
Решение: Появление сообщения в вашем JSON указывает на то, что вы используете API HTTP v1. Связанная вами документация предназначена для устаревшего API.
HTTP v1 API JSON для отправки звукового уведомления для устройств Android и iOS должен быть:
{
"message":{
"token":"your-token-value",
"notification":{
"title":"Test",
"body":"Test message from server"
},
"android":{
"notification":{
"sound":"default"
}
},
"apns":{
"payload":{
"sound":"default"
}
}
}
}
Ссылка: Невозможно добавить звук в полезные данные уведомления
Спасибо.
У меня была эта точная структура с использованием google-api-php-client, и ничего не работало ..UNTIL .. Я использовал двойные кавычки вместо одинарных кавычек вокруг слова "default" ... теперь это работает,
Пожалуйста, опубликуйте журнал ошибок.