FCM iOS: push-уведомления выдают неверный аргумент - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь реализовать pushNotifications с помощью облачных функций и FCM для iOS, но я постоянно получаю эту ошибку:

2018-05-21T13: 04: 00.087ZI sendPushNotifications: Ошибка отправки сообщения: {Ошибка: запрос содержит недопустимый аргумент.в FirebaseMessagingError.Error (родной) в FirebaseMessagingError.FirebaseError [как конструктор] (/user_code/node_modules/firebase-admin/lib/utils/error.js:39:28) в FirebaseMessagingError.Prefix_deror_set_setup_setup_setup_setup_setup_setup_setup_set_set_setup/firebase-admin/lib/utils/error.js:85:28) в новом FirebaseMessagingError (/user_code/node_modules/firebase-admin/lib/utils/error.js:241:16) в Function.FirebaseMessagingError.fromServerRuser_code / node_modules / firebase-admin / lib / utils / error.js: 271: 16) в /user_code/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:149:50 at process._tickDomainCallback (internal / process / next_tick.js: 135: 7) errorInfo: {code: 'message / invalid-аргумент', сообщение: 'Запрос содержит недопустимый аргумент.'}, codePrefix: 'message'}

Моя реализация в облачных функциях выглядит следующим образом:

exports.sendPushNotifications = functions.database.ref('/conversations/{userUid}/').onWrite((snap, context) => {
    const userUid = context.params.userUid

    console.log("Triggered user ", userUid)

    return admin.database().ref('/fcmToken/' + userUid).once('value', snapshot => {
        const values = snapshot.val()
        const fcmToken = values.fcmToken

        var message = {
            "token": fcmToken,

            "notification": {
                "body": "New message"
            },
            "apns": {
                "headers": {
                    "apns-priority": "5"
                },
                "payload": {
                    "aps": {
                        "alert": {
                            "body": "New message"
                        },
                        "badge": "1",
                        "sound": "default"
                    }
                }
            }
        };

        return admin.messaging().send(message)
          .then((response) => {
            return console.log('Successfully sent message:', response);
          })
          .catch((error) => {
            return console.log('Error sending message:', error);
          });
    })
})

Разочаровывает то, что когда я удаляю весь узел "apns",код на самом деле работает, т.е. я могу получать push-уведомления.Я полагаю, это означает, что все мои настройки выполнены правильно.Как только я включил "apns", он начинает выдавать вышеуказанную ошибку.Я также ссылаюсь на эти три поста: , этот , , этот и , этот , и убедился, что я тщательно следовал коду и инструкциям.По некоторым причинам я не могу заставить его работать.

Я также попытался удалить узел "notification", так как в документах упоминалось, что при нацеливании на все платформы используются только общие ключи.Поскольку сейчас я нацеливаюсь только на iOS, я полагаю, мне следует удалить ключ "notification".Но, опять же, выдает ту же ошибку.

1 Ответ

0 голосов
/ 21 мая 2018

Хорошо, это была ошибка новичка.Правильно, что общие ключи не должны использоваться, если я использую только iOS.Кроме того, значок должен быть Int, а не String.

. Этот код работал:

var message = {
    "token": fcmToken,

    "apns": {
        "headers": {
            "apns-priority": "5"
        },
        "payload": {
            "aps": {
                "alert": {
                    "body": "New message"
                },
                "badge": 1,
                "sound": "default"
            }
        }
    }
}

Надеюсь, он поможет любому, кто столкнулся с той же проблемой.

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