LoginSignup
7
5

More than 3 years have passed since last update.

AWS CLIを使ってAmazon SNSからPushKitのVoIPプッシュ通知を送る

Last updated at Posted at 2019-10-24

これはなに

AWS CLIを使ってAmazonSNSからiOSのVoIPプッシュ通知(PushKit通知)を送る手順について、主にデバッグ用途です。
当方、AWSに詳しくないので内容に誤りがある場合はご指摘ください。

準備

  • AWS CLIをインストールする
  • AmazonSNS full access権限のあるIAMを払い出す(もしくは最小限のアクセス権限)
  • 環境変数にIAMの情報をセットする
# env | grep AWS
AWS_SECRET_ACCESS_KEY=XXXXX....
AWS_DEFAULT_REGION=ap-northeast-1
AWS_DEFAULT_OUTPUT=json
AWS_ACCESS_KEY_ID=YYYYY...

エンドポイントの登録

試験用であればAmazonSNSのGUIから登録すればよい、手順は省略。

注意点とし、手元の環境では東京リージョンに登録したエンドポイントへはcliから送信できなかった。米国東部 (バージニア北部)にアプリケーションを作成して登録したら送信できた(要調査)。

aws cli からVoIPプッシュ通知を送る

開発環境(sandbox)の例

endpointのarnが arn:aws:sns:us-east-1:xxxxxxxxx:endpoint/APNS_VOIP_SANDBOX/your_app_name/yyyy.... の場合のコマンド

aws sns publish \
--target-arn arn:aws:sns:us-east-1:xxxxxxxxx:endpoint/APNS_VOIP_SANDBOX/your_app_name/yyyy.... \
--message-attributes \
'{ "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"voip"}}' \
--message '{"APNS_VOIP_SANDBOX":"{\"aps\":{\"foo\":\"bar\"}}"}' \
--message-structure json

ポイントは

  • --message-attributes"AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"voip"} を指定すること
  • --messageAPNS_VOIP_SANDBOX キーに aps を含むデータを入れること

本番環境の例

基本的に開発用の場合と同じ、ただし APNS_VOIP_SANDBOXAPNS_VOIP に変更すること。

要調査

  • 東京リージョンに登録した場合にcliで送信できない件、仕様なのか手順ミスなのか

参考情報

7
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5