Amazon Pinpoint API で push 通知を送信する方法について調査した内容を備忘録として残しておく

前提構成: 前回記事を参照

方法

デベロッパーガイドを参照
※上記の以下の部分はパラメータがほとんど同じため共通化した方が良さそう

リファクタリング前

・・・
if (service == 'GCM') {
  var messageRequest = {
    'Addresses': {
      [token]: {
        'ChannelType': 'GCM'
      }
    },
    'MessageConfiguration': {
      'GCMMessage': {
        'Action': action,
        'Body': message,
        'Priority': priority,
        'SilentPush': silent,
        'Title': title,
        'TimeToLive': ttl,
        'Url': url
      }
    }
  };
} else if (service == 'APNS') {
  var messageRequest = {
    'Addresses': {
      [token]: {
        'ChannelType' : 'APNS'
      }
    },
    'MessageConfiguration': {
      'APNSMessage': {
        'Action': action,
        'Body': message,
        'Priority': priority,
        'SilentPush': silent,
        'Title': title,
        'TimeToLive': ttl,
        'Url': url
      }
    }
  };
}
・・・

リファクタリング後

・・・
var messageRequest = {
  'Addresses': {
    [token]: {
      'ChannelType': service
    }
  },
  'MessageConfiguration': {
    /**
     * リファクタリングポイント:
     *   []とテンプレートリテラルを使用して連装配列の key を動的に生成する
     */
    [`${service}Message`]: {
      'Action': action,
      'Body': message,
      'Priority': priority,
      'SilentPush': silent,
      'Title': title,
      'TimeToLive': ttl,
      'Url': url
    }
  }
};
・・・