AWS Pinpoint Push Notification for NodeJS 没有声音

AWS Pinpoint Push Notification for NodeJS has no sound

目前我有这个参数来精确创建消息,

{
    ApplicationId: config.PROJECT_ID,
    MessageRequest: {
        Addresses: {
            [token]: {
                ChannelType: 'APNS'
            }
        },
        MessageConfiguration: {
            APNSMessage: {
                Title: notification.title,
                Body: notification.message
            }
        }
    }
}

我的代码基于这里 https://docs.aws.amazon.com/pinpoint/latest/developerguide/send-messages-push.html,我使用邮递员检查了它,当推送通知出现时没有声音,我注意到没有声音参数可用,如何在我的通知中添加声音?

在 AWS Pinpoint Test Messaging 中我使用了这个参数并且它按预期工作,但是当我尝试它并使用上面的代码应用它时,它说 "Unexpected key 'aps' found in params.MessageRequest.MessageConfiguration"

{
    APNSMessage: {
        aps: {
            alert: {
                title: notification.title,
                body: notification.message
            },
            sound: 'default'
        }
    }
}

我需要在 NodeJS 中使用 aws-sdk 添加默认值的声音

Amazon Pinpoint SendMessages API 不 expect/allow 使用标准消息发送推送通知时要指定的 "aps" 字典。

  • 要使用标准消息发送带声音的推送通知,请参考以下工作示例代码片段:

    // Specify the parameters to pass to the API.
    var params = {
      ApplicationId: '4fd13a40xxxxxxxx',
      MessageRequest: {
        Addresses: {
          ["token from APNS"]: {
            ChannelType: 'APNS'
          }
        },
        MessageConfiguration: {
            APNSMessage: {
            Title: 'TEST',
            Body: 'This is a sample push notification sent from Amazon Pinpoint by using Nodejs SDK',
            Sound: 'default',
          }
        }
      }
    };
    
  • 要使用 "aps" 字典发送带声音的推送通知,则需要使用:

( i ) RawContent 属性:如果使用 Pinpoint SDK/REST API/CLI。RawContent 属性 需要 defined/specified 作为 JSON 格式的字符串,如下所示:

// Specify the parameters to pass to the API.
var params = {
  ApplicationId: '4fd13a40xxxxxxxx',
  MessageRequest: {
    Addresses: {
      "token from APNS": {
        ChannelType: 'APNS'
      }
    },
    MessageConfiguration: {
        APNSMessage: {
        RawContent : '{"aps":{"alert":"Hello, this is a test push notification!","sound":"default"}}' // If you define 'RawContent' here, everything ("message") else in the "MessageConfiguration" will be ignored.

      }
    }
  }
};

( ii ) RawMessage 属性 :如果使用 Pinpoint 控制台,如下图所示:

{
    APNSMessage: {
        aps: {
            alert: {
                title: notification.title,
                body: notification.message
            },
            sound: 'default'
        }
    }
}

这解释了为什么当您在 AWS Pinpoint 控制台中进行测试并选择“测试消息传递和原始消息”时,通知可以正常工作并发出声音。