Настройка TTL с помощью Amazon SNS Node SDK - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь установить 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()

Любая помощь с благодарностью.

...