モバイル通知用のデバイストークンと Amazon SNS の統合
Apple Push Notification Service (APNs) や Firebase Cloud Messaging (FCM) などの通知サービスに初めてアプリやモバイルデバイスを登録すると、通知サービスからデバイストークンまたは登録 ID が通知サービスから返されます。デバイストークンまたは登録 ID を Amazon SNS に追加すると、それらは PlatformApplicationArn
API とともに、アプリケーションやデバイスのエンドポイントを作成するために使用されます。Amazon SNS がエンドポイントを作成するときに、EndpointArn
が返されます。EndpointArn
は、通知メッセージの送信先のアプリやモバイルデバイスを Amazon SNS が知るための方法です。
次の方法を使用して、デバイストークンと登録 ID を Amazon SNS に追加できます。
-
AWS Management Console を使用して手動で AWS に 1 つのトークンを追加する
-
CreatePlatformEndpoint
API を使用して複数のトークンをアップロードする -
将来アプリケーションをインストールするデバイスからトークンを登録する
手動でデバイストークンまたは登録 ID を追加するには
-
Amazon SNS コンソール
にサインインします。 -
ナビゲーションペインで、[プッシュ通知] を選択します。
-
[プラットフォームアプリケーション] セクションでアプリケーションを選択し、[編集] を選択します。プラットフォームアプリケーションをまだ作成していない場合は、ここで作成します。これを行う手順については、「Amazon SNS プラットフォームアプリケーションの作成」を参照してください。
-
[エンドポイントの追加] を選択します。
-
[エンドトークン] ボックスに、通知サービスに応じてトークン ID または登録 ID を入力します。例えば、ADM や FCM では、登録 ID を入力します。
-
(オプション) [ユーザーデータ] ボックスに、エンドポイントに関連付ける任意の情報を入力します。Amazon SNS はこのデータは使用しません。データは UTF-8 形式で、2 KB 未満でなければなりません。
-
[エンドポイントの追加] を選択します。
エンドポイントが作成され、直接モバイルデバイスにメッセージを送信したり、トピックにサブスクリプションしているモバイルデバイスにメッセージを送信したりできます。
CreatePlatformEndpoint
API を使用して複数のトークンをアップロードするには
次の手順は、AWS に用意されているサンプルの Java アプリケーション (bulkupload
パッケージ) を使用して複数のトークン (デバイストークンまたは登録 ID) を Amazon SNS にアップロードする方法を示しています。既存のトークンのアップロードを開始するには、このサンプルアプリを使用できます。
注記
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java をインストールし、AWS アカウント の AWS セキュリティ認証情報があることを前提としています。詳細については、「AWS SDK for Java
-
snsmobilepush.zip ファイルをダウンロードして解凍します。
-
Eclipse で新しい Java プロジェクトを作成します。
-
新しく作成したされた Java プロジェクトの最上位ディレクトリに
SNSSamples
フォルダーをインポートします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] を選択して、[General] を展開します。次に、[File System]、[Next] の順に選択し、SNSSamples
フォルダーを参照します。その後、[OK]、[Finish] の順に選択します。 -
OpenCSV library
のコピーをダウンロードし、 bulkupload
パッケージのビルドパスに追加します。 -
bulkupload
パッケージに含まれているBulkUpload.properties
ファイルを開きます。 -
以下を
BulkUpload.properties
に追加します。-
エンドポイントを追加する
ApplicationArn
。 -
トークンを含む CSV ファイルの場所の絶対パス。
-
Amazon SNS が正しく解析するトークンと、解析に失敗するトークンのログ記録のために作成される CSV ファイルの名前 (
goodTokens.csv
、badTokens.csv
など)。 -
(オプション) トークンを含む CSV ファイルで区切り記号と引用符を指定する文字。
-
(オプション) エンドポイントを同時に作成するために使用するスレッドの数。デフォルトは 1 スレッドです。
完了した
BulkUpload.properties
は次のようになります。applicationarn:arn:aws:sns:us-west-2:111122223333:app/FCM/fcmpushapp csvfilename:C:\\mytokendirectory\\mytokens.csv goodfilename:C:\\mylogfiles\\goodtokens.csv badfilename:C:\\mylogfiles\\badtokens.csv delimiterchar:' quotechar:" numofthreads:5
-
-
BatchCreatePlatformEndpointSample.java アプリケーションを実行してトークンを Amazon SNS にアップロードします。
この例では、正常に Amazon SNS にアップロードされたトークン用に作成されたエンドポイントは
goodTokens.csv
に記録され、正しい形式でないトークンはbadTokens.csv
に記録されます。さらに、次のような内容を含む STD OUT ログが Eclipse のコンソールに書き込まれます。<1>[SUCCESS] The endpoint was created with Arn arn:aws:sns:us-west-2:111122223333:app/FCM/fcmpushapp/165j2214-051z-3176-b586-138o3d420071 <2>[ERROR: MALFORMED CSV FILE] Null token found in /mytokendirectory/mytokens.csv
将来アプリをインストールするデバイスからトークンを登録するには
次の 2 つのオプションのうちの 1 つを使用できます。
-
Use the Amazon Cognito service: モバイルアプリケーションでは、Amazon SNS プラットフォームアプリケーションと関連付けられた認証情報を作成するために、認証情報が必要です。一定期間後に有効期限が切れる一時認証情報を使用することをお勧めします。ほとんどの場合、Amazon Cognito を使用して一時的なセキュリティ認証情報を作成することをお勧めします。詳細については、「Amazon Cognito デベロッパーガイド」をご覧ください。アプリケーションが Amazon SNS に登録したときに通知を受信する場合は、新しいエンドポイント ARN を提供する Amazon SNS イベントを受信するように登録できます。
ListEndpointByPlatformApplication
API を使用して、Amazon SNS に登録されたエンドポイントの詳細な一覧を取得することもできます。 -
[Use a proxy server]: 各インストールで呼び出し、登録するためにモバイルアプリケーション用にアプリケーションのインフラストラクチャがすでにセットアップされている場合は、引き続きこのセットアップを使用できます。サーバーはプロキシとして動作し、保存したいユーザーデータとともに、Amazon SNS モバイルプッシュ通知にデバイストークンを渡します。そのためには、プロキシサーバーは AWS の認証情報を使用して Amazon SNS に接続し、
CreatePlatformEndpoint
API コールを使用してトークン情報をアップロードします。新しく作成されたエンドポイント Amazon リソースネーム (ARN) が返され、サーバーは Amazon SNS にそれ以降に発行の呼び出しを行うためにこれを保存できます。