【问题标题】:FCM iOS: Invalid 'Sound' in payloadFCM iOS:有效负载中的“声音”无效
【发布时间】:2026-01-03 21:50:01
【问题描述】:

我正在尝试使用 FCM 向我的 iOS 应用程序推送通知,但我遇到了声音问题。我遵循了这个post 并相应地实现了“声音”键值对,但是firebase 抛出了这个错误。有人可以建议吗?

发送消息时出错:{ 错误:收到的 JSON 负载无效。未知 在“message.notification”中命名“声音”:找不到字段。

我在云函数上的 JSON 实现如下:

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

        var message = {
            notification: {
                body: 'New message(s)',
                sound: 'default'
            },

              token: fcmToken
            };

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

【问题讨论】:

  • 您好,这里有什么帮助吗?
  • 完全基于docssound 参数仅适用于Android,这可能是您遇到参数无效错误的原因。但这适用于使用 Cloud Functions 时,您是否使用 REST API 进行了测试?看看它是否有效。
  • @AL。不对。参考这个doc和这个doc我想它也适用于iOS
  • 您链接的第一个文档在 Android 通知对象下清楚地显示了sound。我并不是说这不完全可能。我只是说 对于 Cloud Functions 是不可能的,因此我建议测试通过 REST API 发送有效负载。
  • @AL。能够显示一些代码?我需要使用数据库触发器来发送此 pushNotification。不太清楚如何通过这个实现 REST API...

标签: ios firebase firebase-cloud-messaging google-cloud-functions


【解决方案1】:

我担心我现在迟到了,但这是使用 HTTP v1 API。就像所有 android 特定的设置都应该放在一个 android 对象中一样,iOS 特定的设置应该放在一个 APNs 对象中。

var message = {
        notification: {
            title: "Title Notification"
            body: "New message(s)"
        },
        token: fcmToken,
        apns: {
            aps:{
                sound:"default"
            }
        } 
    };

【讨论】:

    最近更新 更多