Memo

メモ > 技術 > サービス: 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 → トピック 送信先にチェックを入れて「メッセージの発行」をクリック。 とすれば、トピックに対しても送信できる。

Advertisement