Apple Push Notification Service(APNS)は、iOS および OS X アプリケーションにプッシュ通知メッセージを送信できるようにするサービスです。このセクションでは、APNS の前提条件を取得し、Amazon SNS および APNS を使用してプッシュ通知メッセージを送信する方法について説明します。
Topics
Amazon SNS および APNS を使用してモバイルデバイスにプッシュ通知を送信するには、以下を取得する必用があります。
APNS に登録された iOS アプリ
APNS SSL 証明書
アプリケーションプライベートキー
デバイストークン
すでにこれらの前提条件を満たしている場合は、Amazon SNS コンソールまたは Amazon SNS API を使用して iOS アプリにプッシュ通知メッセージを送信できます。Amazon SNS コンソールの使用方法の詳細については、「Amazon SNS モバイルプッシュの使用」を参照してください。Amazon SNS API の使用方法の詳細については、「ステップ 6: Amazon SNS および APNS を使用して iOS アプリにプッシュ通知メッセージを送信する」を参照してください。
iOS アプリへのプッシュ通知メッセージの送信を開始するには、Apple 開発者アカウントを持ち、App ID(アプリケーション ID)の作成、iOS デバイスの登録、および iOS プロビジョニングプロファイルの作成を完了している必用があります。詳細については、「Apple Local and Push Notification Programming Guide」を参照してください。
Note
iOS アプリを APNS に登録していない場合は、手始めに AWS が提供するサンプル iOS アプリをテンプレートとして使用することもできます。詳細については、「ステップ 5: デバイス トークンを取得する」を参照してください。
Amazon SNS には、Amazon SNS API の使用時にアプリの .pem 形式の APNS SSL 証明書が必要です。.p12 形式の証明書は Amazon SNS コンソールでアップロードできます。Amazon SNS によってその証明書は .pem に変換され、コンソールに表示されます。Mac コンピュータ上の Keychain Access アプリケーションを使用して APNS SSL 証明書をエクスポートします。SSL 証明書の詳細については、Apple の『Local and Push Notification Programming Guide』の「Provisioning and Development」を参照してください。
APNS SSL 証明書をダウンロードするには
Apple の Developer ウェブサイトで、[Member Center]、[Certificates, Identifiers and Profiles]、[Certificates] の順にクリックします。
iOS APNS 開発用に作成した証明書を選択し、[Download] をクリックして、ファイル(拡張子は .cer)を保存します。
APNS SSL 証明書を .cer 形式から .pem 形式に変換するには
以下の手順では、openssl ユーティリティを使用します。
コマンドプロンプトで、次のコマンドを入力します。myapnsappcert.cer
を Apple の Developer ウェブサイトからダウンロードした証明書の名前に置き換えます。
openssl x509 -inmyapnsappcert.cer
-inform DER -outmyapnsappcert.pem
新しく作成した .pem ファイルは、モバイルプッシュ通知メッセージを送信するように Amazon SNS を設定するために使用します。
Amazon SNS には、.pem 形式のアプリケーションプライベートキーが必要です。Mac コンピュータ上の Keychain Access アプリケーションを使用して、アプリケーションプライベートキーをエクスポートします。
アプリケーションプライベートキーを取得するには
SSL 証明書に関連付けられたプライベートキーは、Mac コンピュータ上の Keychain Access アプリケーションからエクスポートできます。これは、Apple の Developer ウェブサイトからダウンロードした .cer ファイルが Keychain Access にインポートされていることを前提としています。そのためには、.cer ファイルを Keychain Access にコピーするか、.cer ファイルをダブルクリックします。
[Keychain Access] を開き、[Keys] を選択して、自分のアプリケーションプライベートキーを強調表示します。
[File]、[Export Items...] の順にクリックし、[Save As:] フィールドに名前を入力します。
デフォルトのファイル形式 .p12 をそのまま使用して、[Save] をクリックします。
.p12 ファイルは .pem ファイル形式に変換されます。
.pem 証明書とプライベートキーファイルは、APNS に接続するために使用することで検証できます。
プッシュ通知メッセージを受信するためにアプリケーションを APNS に登録すると、デバイストークン(64 バイトの 16 進値)が生成されます。以下の手順は、AWS によって提供されるサンプル iOS アプリを使用して APNS からデバイストークンを取得する方法について説明しています。Amazon SNS プッシュ通知の使用を開始するときは、このサンプル iOS アプリが役立ちます。詳細については、Apple の『Local and Push Notification Programming Guide』の「Registering for Remote Notifications」を参照してください。
アプリ用の APNS からデバイストークンを取得するには
snsmobilepush.zip ファイルをダウンロードして解凍します。
AppleMobilePushApp
フォルダーに移動し、iOS 7 and earlier
フォルダーまたは iOS 8
フォルダーを開きます。
Xcode で、AmazonMobilePush.xcodeproj
プロジェクトを開きます。
Xcode でアプリを実行します。出力ウィンドウに、以下のようなデバイストークンが表示されます。
Device Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73>
Note
Amazon SNS に送信するときは、デバイストークンにスペースを含めないでください。
この時点で、プッシュ通知メッセージをモバイルエンドポイントに送信するために必要な情報(SSL 証明書、アプリケーションプライベートキー、デバイストークン)を APNS から入手している必要があります。これで、Amazon SNS コンソールまたは Amazon SNS API を使用して、デバイスの iOS アプリに通知を送信できます。Amazon SNS コンソールを使用するには、「Amazon SNS モバイルプッシュの使用」を参照してください。Amazon SNS API を使用するには、「ステップ 6: Amazon SNS および APNS を使用して iOS アプリにプッシュ通知メッセージを送信する」を参照してください。
このセクションでは、Amazon SNS と APNS を使用して iOS アプリにプッシュ通知メッセージを送信するための Amazon SNS API の前提条件情報の使用方法について説明します。AWS のサンプルファイル SNSMobilePush.java
に前提条件情報を追加します。サンプルファイルは snsmobilepush.zip ファイルに含まれています。
Amazon SNS コンソールを使用することもできます。Amazon SNS コンソールの使用方法の詳細については、「Amazon SNS モバイルプッシュの使用」を参照してください。
Note
以下の手順では、Eclipse Java IDE を使用します。これらの手順では、AWS SDK for Java をインストールし、AWS アカウントの AWS セキュリティ認証情報があることを前提としています。詳細については、「AWS SDK for Java」を参照してください。認証情報の詳細については、「セキュリティ認証情報の取得方法」(AWS General Reference)を参照してください。
サンプルを Eclipse に追加するには
Eclipse で新しい Java プロジェクトを作成します([File] | [New] | [Java Project])。
新しく作成した Java プロジェクトの最上位ディレクトリに SNSSamples
フォルダーをインポートします。Eclipse で、Java プロジェクトの名前を右クリックし、[Import] をクリックして、[General] を展開します。[File System]、[Next] の順にクリックして、SNSSamples
フォルダを参照し、[OK] をクリックしてから、[Finish] をクリックします。
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーで、AwsCredentials.properties
ファイルを開き、AWS の認証情報を追加します。
ビルドパスに AWS SDK for Java を追加するには
Java Project フォルダーを右クリックし、[Build Path] をクリックしてから、[Configure Build Path...] をクリックします。
[Add Library...] をクリックします。
] タブをクリックし、[[AWS SDK for Java] をクリックし、[Next] をクリックしてから、[Finish] をクリックします。
前提条件情報を SNSMobilePush.java
に追加するには
SNSSamples\src\com\amazonaws\sns\samples\mobilepush フォルダーの SNSMobilePush.java
を Eclipse で開きます。
使用している APNS によって、sample.demoAppleAppNotification();
または sample.demoAppleSandboxAppNotification();
のいずれかのコメントを解除します。たとえば、demoAppleSandboxAppNotification
を使用している場合は、次のようになります。
SNSMobilePush sample = new SNSMobilePush(sns); // TODO: Uncomment the services you wish to use. // sample.demoAndroidAppNotification(); // sample.demoKindleAppNotification(); // sample.demoAppleAppNotification(); sample.demoAppleSandboxAppNotification(); // sample.demoBaiduAppNotification(); // sample.demoWNSAppNotification(); // sample.demoMPNSAppNotification();
demoAppleSandboxAppNotification
メソッドを探し、デバイストークン文字列の値として、APNS から受け取ったデバイストークンを入力します。たとえば、次のようになります。
String deviceToken = "examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73";
アプリケーション用の APNS SSL 証明書を入力します。証明書の各行の先頭には、\n
を追加する必要があります。たとえば、次のようになります。
String certificate = "-----BEGIN CERTIFICATE-----\nMIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\nb24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd\nBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN\nMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD\nVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z\nb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt\nYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ\n21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T\nrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE\nIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4\nnUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb\nFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb\nNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=\n-----END CERTIFICATE-----";
アプリケーション用のプライベートキーを入力します。証明書の各行の先頭には、\n
を追加する必要があります。たとえば、次のようになります。
String privateKey = "-----BEG1N RSA PR1VATE KEY-----\nMJICiTCHAfICCQD9m7oRw0uXOjANBgkqhkiG7w0BAQUFADCBiDELMAkGA1UEBhMC\nWVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGx2MQ8wDQYDVQQKEwZBbWF6\nVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6\n4MXNchZOFFreg4Rr3Xzhb9RhvlIRgsr3wU4/FYai3z96EXAMPLE=\n-----END RSA PR1VATE KEY-----";
アプリの名前を入力します。アプリ名は大文字および小文字の ASCII 文字、数字、アンダースコア、ハイフン、およびピリオドのみで構成され、1~256 文字の長さである必要があります。たとえば、次のようになります。
String applicationName = "mypushappname";
Java アプリケーションを実行します。IDE の出力ウィンドウに次のような出力が表示されます。
=========================================== Getting Started with Amazon SNS =========================================== {PlatformApplicationArn: arn:aws:sns:us-west-2:111122223333:app/APNS_SANDBOX/mypushappname} {EndpointArn: arn:aws:sns:us-west-2:111122223333:endpoint/APNS_SANDBOX/pushapp/97e9ced9-f136-3893-9d60-775467eafebb} {"default":"This is the default Message","APNS_SANDBOX":"{ \"aps\" : { \"alert\" : \"You have got email.\", \"badge\" : 9,\"sound\" :\"default\"}}"} Published. MessageId=d65fb4bb-b903-5e37-83d4-feb4818d6da3
iOS デバイスで、メッセージ通知を確認します。