Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

デバイストークンまたは登録 ID の追加

Apple Push Notification Service (APNS) や Android 用 Google クラウドメッセージング (GCM) などの通知サービスに初めてアプリやモバイルデバイスを登録すると、通知サービスからデバイストークンまたは登録 ID が通知サービスから返されます。デバイストークンまたは登録 ID を Amazon SNS に追加すると、それらは PlatformApplicationArn API とともに、アプリやデバイスのエンドポイントを作成するために使用されます。Amazon SNS がエンドポイントを作成するときに、EndpointArn が返されます。EndpointArn は、通知メッセージの送信先のアプリやモバイルデバイスを Amazon SNS が知るための方法です。

以下の方法を使用して、デバイストークンと登録 ID を Amazon SNS に追加できます。

  • AWS マネジメントコンソール を使って手動で AWS に単一のトークンを追加する

  • AWS マネジメントコンソール を使って CSV ファイルから AWS に既存のトークンを移行する

  • CreatePlatformEndpoint API を使って複数のトークンをアップロードする

  • 将来アプリをインストールするデバイスからトークンを登録する

手動でデバイストークンまたは登録 ID を追加するには

  1. https://console.aws.amazon.com/sns/v2/home に移動して、[Apps] をクリックし、アプリをクリックしてから、[Add Endpoints] をクリックします。

  2. [Endpoint Token] ボックスで、通知サービスに応じてトークン ID または登録 ID を入力します。たとえば、ADM や GCM では、登録 ID を入力します。

  3. (オプション)[User Data] に、エンドポイントに関連付ける任意の情報を入力します。Amazon SNS はこのデータを使用しません。データは UTF-8 形式で、2 KB 未満でなければなりません。

  4. 最後に、[Add Endpoints] をクリックします。

    これでエンドポイントを作成したので、直接モバイルデバイスにメッセージを送信するか、トピックに受信登録しているモバイルデバイスにメッセージを送信することができます。

既存のトークンを CSV ファイルから AWS に移行するには

CSV ファイルに含まれている既存のトークンを移行できます。CSV ファイルは 2 MB より大きくすることはできません。複数のトークンを移行するときは、CreatePlatformEndpoint API を使用することをお勧めします。CSV ファイルの各トークンの後には改行が必要です。たとえば、CSV ファイルは次のようになります。

amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz01,"User data with spaces requires quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz04,"Data,with,commas,requires,quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz02,"Quoted data requires ""escaped"" quotes" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz03,"{""key"": ""json is allowed"", ""value"":""endpoint"", ""number"": 1}" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz05,SimpleDataNoQuotes amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz06,"The following line has no user data" amzn1.adm-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz07 APBTKzPGlCyT6E6oOfpdwLpcRNxQp5vCPFiFeru9oZylc22HvZSwQTDgmmw9WdNlXMerUPxmpX0w1,"Different token style"
  1. https://console.aws.amazon.com/sns/v2/home に移動して、[Apps] をクリックし、アプリをクリックしてから、[Add Endpoints] をクリックします。

  2. [Migrate existing tokens over to AWS] をクリックし、[Choose File] をクリックし、CSV ファイルを選択してから、[Add Endpoints] をクリックします。

CreatePlatformEndpoint を使用して複数のトークンをアップロードするには

以下の手順は、AWS に用意されているサンプルの Java アプリ (bulkupload パッケージ) を使用して複数のトークン (デバイストークンまたは登録 ID) を Amazon SNS にアップロードする方法を示しています。既存のトークンのアップロードを開始するには、このサンプルアプリを使用できます。

注記

以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java をインストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としています。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細については、「セキュリティ認証情報の取得方法」(AWS General Reference) を参照してください。

  1. snsmobilepush.zip ファイルをダウンロードして解凍します。

  2. Eclipse で新しい Java プロジェクトを作成します。

  3. 新しく作成したされた Java プロジェクトの最上位ディレクトリに SNSSamples フォルダーをインポートします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、[General] を展開します。次に、[File System] をクリックし、[Next] をクリックして、SNSSamples フォルダーを参照し、[OK] をクリックしてから、[Finish] をクリックします。

  4. OpenCSV library のコピーをダウンロードし、bulkupload パッケージのビルドパスに追加します。

  5. bulkupload パッケージに含まれている BulkUpload.properties ファイルを開きます。

  6. 以下を BulkUpload.properties に追加します:

    • エンドポイントを追加する ApplicationArn

    • トークンを含む CSV ファイルの場所の絶対パス。

    • Amazon SNS が正しく解析するトークンと、解析に失敗するトークンのログ記録のために作成される CSV ファイルの名前 (goodTokens.csvbadTokens.csv など)。

    • (オプション) トークンを含む CSV ファイルで区切り記号と引用符を指定する文字。

    • (オプション) エンドポイントを同時に作成するために使用するスレッドの数。デフォルトは 1 スレッドです。

    完了した BulkUpload.properties は次のようになります。

    applicationarn:arn:aws:sns:us-west-2:111122223333:app/GCM/gcmpushapp csvfilename:C:\\mytokendirectory\\mytokens.csv goodfilename:C:\\mylogfiles\\goodtokens.csv badfilename:C:\\mylogfiles\\badtokens.csv delimiterchar:' quotechar:" numofthreads:5
  7. 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/GCM/gcmpushapp/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 にそれ以降に発行の呼び出しを行うためにこれを保存できます。