メモ > 技術 > サービス: AmazonSNS > AmazonSNS: 動作確認
AmazonSNS: 動作確認
■端末ごとに送信(Android)
Amazon SNS → プッシュ通知 → PushTest1-FCM-Dev
この画面で、「このアプリケーションにはエンドポイントがありません。」と表示されていることを確認する。
作成したPHPプログラムにアクセスし、
「CreatePlatformEndpoint」で以下を入力して実行する。
applicationArn: arn:aws:sns:ap-northeast-1:949004901725:app/GCM/PushTest1-FCM-Dev
deviceToken: (プッシュ通知を送信したいAndroid端末のデバイストークン。)
先ほどの画面に、エンドポイントが追加されていることを確認する。
トークンに対応したARNが作成され、AmazonSNSでプッシュ通知を送るときはこのARNを使用する。
作成したPHPプログラムにアクセスし、
「Publish」で以下を入力して実行する。
message: 任意のメッセージ(日本語可)を入力。
targetArn: (プッシュ通知を送信したいAndroid端末のARN。)
topicArn: (空欄)
端末にプッシュ通知が届くことを確認する。
(AmazonSNS経由なら、iOS・Androidとも端末に即座に届いた。)
なお、無効になったエンドポイントに送信した場合、以下のエラーが表示される。
これをもとに無効な送信先を削除したりはできそう。
またそれとは別に、アプリを起動するたびにデバイストークンの更新を行うと良さそう。(その時点でのデバイストークンを、AmazonSNSに上書き登録する。)
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)
Androidのときのように、「CreatePlatformEndpoint」で以下を入力して実行する。
applicationArn: arn:aws:sns:ap-northeast-1:949004901725:app/APNS_SANDBOX/PushTest1-APNS-Dev
deviceToken: (プッシュ通知を送信したいiOSのデバイストークン)
Androidのときのように、「Publish」で以下を入力して実行する。
message: 任意のメッセージ(日本語可)を入力
targetArn: (プッシュ通知を送信したいiOSのARN)
端末にプッシュ通知が届くことを確認する。
■トピックごとに送信
Amazon SNS → トピック → 作成したトピックの名前をクリック
この画面で、エンドポイントがカラであることを確認する。
作成したPHPプログラムにアクセスし、
「Subscribe」でトピックのARNと追加したい端末のARNを入力して実行する。(トピックにARNが追加される。)
「Publish」で以下を入力して実行する。
message: 任意のメッセージ(日本語可)を入力。
targetArn: (空欄)
topicArn: (プッシュ通知を送信したいトピックのARN。)
※トピック内に無効なエンドポイントが含まれていても、特にエラーなどは返してくれないみたい?
要検証。
■AmazonSNSから送信(デバッグ用)
Amazon SNS → プッシュ通知 → 作成したアプリケーションの名前をクリック
送信先にチェックを入れて「メッセージの発行」をクリック。
メッセージ構造: すべての配信プロトコルに同一のペイロード
メッセージ: AmazonSNSから直接送信
「メッセージの発行」をクリックすると送信できる。
また、「メッセージ構造」を「配信プロトコルごとにカスタムペイロード」にすると、
メッセージに以下のようなテキストが表示される。
「Sample message for iOS development endpoints」の部分を任意のメッセージに変更して送信でき、単純なメッセージ以外も送信できるようになる。
{
"APNS_SANDBOX": "{\"aps\":{\"alert\":\"AmazonSNSから直接送信\"}}"
}
Amazon SNS → トピック
送信先にチェックを入れて「メッセージの発行」をクリック。
とすれば、トピックに対しても送信できる。