Уведомление FCM в iOS не воспроизводит звук при получении

Я использую push-уведомления Firebase в своем приложении iOS. Хотя я могу отправить уведомление, отправив нижеуказанную полезную нагрузку, при получении он не воспроизводит звук.

{
    "to": "myToken",
    "notification": {
        "body": "test",
        "title": "test"
    },
    "priority": "high"
    "sound": "default"
}

Если я отправлю тестовое сообщение с консоли, оно работает нормально и воспроизводит звук уведомления.
Примечание:

  1. Мой код авторизации правильный
  2. Я отправляю http-запрос на https://fcm.googleapis.com/fcm/send
  3. Я тестировал его на iPhone 4, IPhone 6 и IPhone 6S, все получают уведомления без звука

person Jr Pro    schedule 05.09.2016    source источник
comment
я получаю уведомления от fcm. Теперь я хочу сделать такую ​​функциональность, как когда я получу уведомление от fcm, приложение должно воспроизводить звуковой файл, даже не касаясь сообщения с уведомлением. ты знаешь, как это сделать? didRecieveRemoteNotification будет выполняться только тогда, когда пользователь нажимает на уведомление. Я хочу воспроизвести звуковой файл, например мелодию будильника, когда я получаю уведомление. пожалуйста, проведите меня через это.   -  person Moxarth    schedule 06.07.2017


Ответы (4)


ваш JSON "sound" : "default" должен находиться внутри ключа "notification", а не в корне JSON. Этот JSON должен работать.

{
    "to": "myToken",
    "notification": {
         "body": "test",
         "title": "test",
         "sound": "default"
    },
    "priority": "high"
}
person kaitosenpai    schedule 06.09.2016
comment
У меня такая же структура на сервере, но на некоторых устройствах звуковой файл не воспроизводится, когда приложение находится в фоновом режиме. - person VikasGoyal; 09.03.2017
comment
я получаю уведомления от fcm. Теперь я хочу сделать такие функции, как когда я получу уведомление от fcm, приложение должно воспроизводить звуковой файл, даже не касаясь сообщения с уведомлением. ты знаешь, как это сделать? didRecieveRemoteNotification будет выполняться только тогда, когда пользователь нажимает на уведомление. Я хочу воспроизвести звуковой файл, например мелодию будильника, когда я получаю уведомление. пожалуйста, проведите меня через это. - person Moxarth; 06.07.2017
comment
где должен существовать этот файл json? потому что я тестирую уведомление через пользовательский интерфейс firebase.com, так как я могу отправить эту полезную нагрузку со звуком? - person Joe Sleiman; 17.07.2017
comment
Спасибо, у меня сработало. Не могли бы вы предоставить источник вашего ответа? Спасибо. - person Cyril; 19.09.2018
comment
@DuncanJones, на самом деле, ваш ответ не сработал для меня с iOS 12.1, но включение sound:'default' в объект notification, не связанный с устройством, в конечном итоге сработал для меня. - person Works for a Living; 14.05.2019
comment
но для этого требуется только два аргумента (заголовок и тело), ​​если вы делаете это без json: Message.builder() .setNotification(new Notification( "$GOOG up 1.43% on the day", "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")) firebase.google.com/docs/cloud-messaging/ios/topic-messaging - person user924; 10.06.2019
comment
Внимание, это верно только в том случае, если вы используете устаревший api, а не http v1 api. см. эту страницу: firebase.google.com/docs/cloud-messaging/migrate- v1 - person Manu Eidenberger; 28.10.2019
comment
ты спас меня !!!!! - person Skander Hamdi; 24.02.2021

При использовании FCM admin SDK звуки необходимо указывать отдельно для устройств Android и Apple:

let message = {
    notification: {
        'body': 'This is the message the user sees',
    },
    data: {
        'param1': 'specify some extra data here',
    },
    // Apple specific settings
    apns: {
        headers: {
            'apns-priority': '10',
        },
        payload: {
            aps: {
                sound: 'default',
            }
        },
    },
    android: {
      priority: 'high',
      notification: {
          sound: 'default',
      }
    },
    token: 'target FCM token goes here',
};

(Примечание: пока я тестировал только настройки Apple)

person Duncan Jones    schedule 26.06.2018
comment
Хороший звонок - я нигде не смог найти никакой информации о том, как заставить звуки уведомлений работать в IOS, не понимал, что это часть объекта APNS! Приветствую вас. - person JVG; 27.06.2018

    payload = {
        notification:{
            title: 'SOLO has been changed by an administrator',
            body: 'Administrator changed your SOLO schedule',
        },
        android: {
        },
        apns: {
            headers:{
                "apns-collapse-id": "solo_changed_administrator",
                "content-available": "1",
                "apns-priority": "10",
            },
            payload:{
                aps:{
                    sound: 'default',
                    badge: 12213123223
                }
            }
        },
        data:{
            type: 'type'
        }
    }

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages?authuser=0#ApnsConfig.

person Yaroslav Malyk    schedule 09.07.2018

У меня такая же проблема. Когда уведомления приходят через FCM на iOS, не работают звуки или вибрации. Здесь я перешел по этой ссылке: https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#//apple_ref/doc/uid/TP40008194-CH17-SW1 И наконец-то все прошло успешно. Я создал свое уведомление о яблоке как предупреждение в своей полезной нагрузке, и оно работает для меня. Вот мой JSON ниже, чтобы получить представление о моем решении.

"apns": {
    "payload": {
        "aps" : {
            "alert" : {
                "body": "Notification body",
                "title": "Notification title"
            },
            "badge" : 2,
            "sound" : "default"
        }
    }
}

Примечание. Поместите этот ключ apns в соответствующее место запроса сообщения. Я использовал вызов REST для запроса сообщения. Перейдите по следующей ссылке, чтобы получить хорошее представление о том, как отправить сообщение с уведомлением с параметрами доставки, зависящими от платформы. Ссылка: https://firebase.google.com/docs/cloud-messaging/concept-options#example-notification-message-with-platform-specific-delivery-options.

person C M    schedule 18.07.2021