Проблема со звуком уведомлений FCM Android

Я пытаюсь отправить уведомление с помощью 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"

Пожалуйста, опубликуйте журнал ошибок.

Pratik Butani 08.01.2019 07:17

Может быть тебе стоит попробовать. : github.com/fechanique/cordova-plugin-fcm/issues/… Я думаю у вас БОЛЬШОЙ КРОНШТЕЙН - проблема как массив. Возможно, вам придется передать объект как {}.

Pratik Butani 08.01.2019 11:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
7 769
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

{
    "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" ... теперь это работает,

greaterKing 02.04.2021 05:06

Другие вопросы по теме