Невозможно отправить iOS CriticalAlert в Firebase Cloud Messaging - PullRequest
2 голосов
/ 15 апреля 2019

У меня есть собственное приложение, в котором в моем приложении настроена опция критического оповещения.Я подтвердил, что когда я отправляю следующее с помощью pushy-приложения, я могу заставить Critical Alert работать с приложением iOS.

Проблема в том, что наш внутренний сервер в настоящее время только отправляет уведомления в Firebase Cloud Messaging, и я не могу настроить сырую полезную нагрузку push для воспроизведения критического предупреждения на устройстве.

Вот пример , который Apple дала о том, как push должен выглядеть APNS:

Вот то, что я отправляю с помощью напористого приложения, которое работает в приложении:

{
    "aps" : {
        "content_available": true,
        "priority": "high",
        "alert" : "Your message Here",
        "badge" : 1,
        "sound": {
            "critical": 1,
            "name": "alert.wav",
            "volume": 1.0
        },
        "data": {
            "volume": 7,
            "time_to_live": 900,
            "id": 3618,
            "type": "engagement",
            "overrideMessage": "Testing oncall for iOS",
            "case": "Test Case",
            "repeatNumber": 3,
            "customer": "Google"
        }
    }
}

Вот текущая полезная нагрузка, которую мы отправляем в FCM, и она работает с нестандартным звуком, но мы действительно хотим, чтобы критическое оповещение работало, так как нажатие на вызов по вызову:

{
    "to": "firebaseToken",
    "content_available": true,
    "priority": "high",
    "isCritical": "true",
    "notification": {
        "title": "Title in notification",
        "body": "Body in notification",
        "sound": "alert.wav",
        "badge": "1",
        "subtitle": "subtitle in notification"
    },
    "data": {
        "volume": 7,
        "time_to_live": 900,
        "id": 3618,
        "type": "engagement",
        "overrideMessage": "Testing oncall for iOS",
        "case": "Test Case",
        "repeatNumber": 3,
        "customer": "Google"
    }
}

Я перепробовал большое количество комбинаций для отправки в FCM, но безуспешно:

{
        "to": "firebaseToken",
    "apns": {
        "headers": {
                "apns-priority": "10"
            },
            "payload": {
            "aps" : {
                "sound": {
                    "critical": 1,
                    "name": "alert.wav",
                    "volume": 0.5
                },

и

{
    "aps" : {
        "to": "firebaseToken",
        "content_available": true,
        "priority": "high",
        "alert" : "Your message Here",
        "badge" : 1,
        "sound": {
            "critical": 1,
            "name": "alert.wav",
            "volume": 0.5
        },

и

 {
    "to": "firebaseToken",
    "aps" : {
        "sound" : {
            "critical": 1,
            "name": "alert.wav",
            "volume": 1.0
        }
    },
    "notification": {
        "badge": "1",

и

{
    "to": "firebaseToken",
    "isCritical": "true",
    "content_available": true,
        "notification": {
        "badge": "1",
            "sound" : {
                "critical": 1,
                "name": "alert.wav",
                "volume": 1.0
            },

Ни один из них не позволил передать звуковой словарь в FCM.

У меня также есть ответ здесь , но это не решает мою проблему,поскольку я требую, чтобы iOS знала, что это push-уведомление является критически важным, и ОС должна обрабатывать его, а не мое приложение.

1 Ответ

1 голос
/ 18 апреля 2019

Прежде чем дать ответ на ваш конкретный вопрос, я хотел бы рекомендовать вам рассмотреть возможность использования Admin SDK вместо REST API, если это возможно. SDK доступен в Node.js, Java, Python, Go и C #. Если код вашего сервера написан на любом из этих языков, это гораздо более простой способ обработки отправки сообщений с помощью FCM. SDK обрабатывает повторы и другие сценарии, которые в противном случае вам пришлось бы реализовать в своем коде.

Что касается вашего вопроса, в руководствах отмечено, что поля, специфичные для платформы, работают только с конечной точкой FCM v1. Для использования FCM ваша конечная точка будет выглядеть так:

https://fcm.googleapis.com/v1/projects/[your-project-id]/messages:send

Пример этого вы можете увидеть в руководствах . Выберите REST на вкладке фрагмента, чтобы увидеть пример.

Обратите внимание, что способ авторизации отправки отличается от V1. Вы можете узнать больше в руководстве . Если у вас возникли проблемы с аутентификацией, я также написал пост в блоге , поскольку он появляется довольно регулярно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...