メモ > 技術 > サービス: AmazonSNS > AmazonSNS: 動作確認
■AmazonSNS: 動作確認
■端末ごとに送信(Android)
Simple Notification Service → プッシュ通知 → 作成したアプリケーションの名前をクリック
この画面で、「このアプリケーションにはエンドポイントがありません。」と表示されていることを確認する
作成したPHPプログラムの index.php にアクセスし、
「CreatePlatformEndpoint」で以下を入力して実行する
applicationArn: arn:aws:sns:ap-northeast-1:0123456789:app/GCM/Push-Test4-FCM-Dev
deviceToken: (プッシュを送信したいAndroid端末のデバイストークン)
先ほどの画面に、エンドポイントが追加されていることを確認する
トークンに対応したARNが作成され、AmazonSNSでプッシュを送るときはこのARNを使用する
作成したPHPプログラムの index.php にアクセスし、
「Publish」で以下を入力して実行する
message: 任意のメッセージ(日本語可)を入力
targetArn: (プッシュを送信したいAndroid端末のARN)
なお、無効になったエンドポイントに送信した場合、以下のエラーが表示される
これをもとに無効な送信先を削除したりはできそう
これとは別に、アプリを起動するたびにデバイストークンの更新を行うと良さそう
Error executing "Publish" on "https://sns.ap-northeast-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://sns.ap-northeast-1.amazonaws.com` resulted in a `400 Bad Request` response:
<ErrorResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
<Error>
<Type>Sender</Type>
<Code>EndpointDis (truncated...)
EndpointDisabled (client): Endpoint is disabled - <ErrorResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
<Error>
<Type>Sender</Type>
<Code>EndpointDisabled</Code>
<Message>Endpoint is disabled</Message>
</Error>
<RequestId>2175f167-ac6a-55fe-9458-a5405b37d703</RequestId>
</ErrorResponse>
■端末ごとに送信(iOS)
「CreatePlatformEndpoint」で以下を入力して実行する
applicationArn: arn:aws:sns:ap-northeast-1:949004901725:app/APNS_SANDBOX/Push-Test4-APNS-Dev
deviceToken: (プッシュを送信したいiOSのデバイストークン)
「Publish」で以下を入力して実行する
message: 任意のメッセージ(日本語可)を入力
targetArn: (プッシュを送信したいiOSのARN)
■トピックごとに送信
Simple Notification Service → トピック → 作成したトピックの名前をクリック
この画面で、エンドポイントがカラであることを確認する
作成したPHPプログラムの index.php にアクセスし、
「Subscribe」でトピックのARNと追加したい端末のARNを入力して実行する
「Publish」で以下を入力して実行する
message: 任意のメッセージ(日本語可)を入力
topicArn: (プッシュを送信したいAndroid端末のARN)
※トピック内に無効なエンドポイントが含まれていても、特にエラーなどは返してくれないみたい?
要検証
■AmazonSNSから送信(デバッグ用)
Simple Notification Service → プッシュ通知 → 作成したアプリケーションの名前をクリック
送信先にチェックを入れて「メッセージの発行」をクリック
メッセージ構造: すべての配信プロトコルに同一のペイロード
メッセージ: AmazonSNSから直接送信
「メッセージの発行」をクリックすると送信できる
また、「メッセージ構造」を「配信プロトコルごとにカスタムペイロード」にすると、
メッセージに以下のようなテキストが表示される
「Sample message for iOS development endpoints」の部分を任意のメッセージに変更して送信でき、単純なメッセージ以外も送信できるようになる
{
"APNS_SANDBOX": "{\"aps\":{\"alert\":\"Sample message for iOS development endpoints\"}}"
}
Simple Notification Service → トピック
送信先にチェックを入れて「メッセージの発行」をクリック
とすれば、トピックに対しても送信できる