Я пытаюсь установить TTL для push-уведомления, отправляемого с помощью Amazon SNS SDK для NodeJS, в соответствии с этими документами:
https://docs.aws.amazon.com/sns/latest/dg/sns-ttl.html
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html
Однако я не могу заставить его работать.Журналы не возвращают никаких ошибок, и push-уведомление проходит.
Я проверяю, отправив push-уведомление на устройство в режиме «В самолете», а затем жду 60 секунд, прежде чем выключить режим «В самолете».Если TTL работает, я не должен получать push-уведомление, но через 60 секунд я получаю.
Вот код, который я использую для отправки push-уведомления:
const AWS = require('aws-sdk')
const defaultTTL = '60' // in seconds
class SNS {
publish (data, endpoint) {
const snsClient = new AWS.SNS({
region: process.env.AWS_REGION,
apiVersion: '2010-03-31',
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
})
const payload = {
aps: {
'content-available': 1
},
data
}
const TTLSettings = new Map()
TTLSettings.set('DataType', 'String')
TTLSettings.set('StringValue', defaultTTL)
let message = {}
const messageAttributes = new Map()
if (endpoint.includes('SANDBOX')) {
message['APNS_VOIP_SANDBOX'] = JSON.stringify(payload)
messageAttributes.set('AWS.SNS.MOBILE.APNS_SANDBOX.TTL', TTLSettings)
} else {
message['APNS_VOIP'] = JSON.stringify(payload)
messageAttributes.set('AWS.SNS.MOBILE.APNS.TTL', TTLSettings)
}
const params = {
TargetArn: endpoint,
MessageStructure: 'json',
Message: JSON.stringify(message),
MessageAttributes: messageAttributes
}
return snsClient.publish(params).promise()
}
}
module.exports = new SNS()
Любая помощь с благодарностью.