Amazon Simple Notification Service - AWS Mobile SDK for Unity

AWS Mobile SDK for Unity が、AWS SDK for .NET に含まれるようになりました。このガイドでは Mobile SDK for Unity のアーカイブバージョンを参照します。詳細については、AWS Mobile SDK for Unity とは を参照してください。

Amazon Simple Notification Service

Amazon Simple Notification Service (SNS) と Unity SDK を使用すると、モバイルプッシュ通知を受信できる iOS と Android アプリを構築できます。SNS の詳細については、「Amazon Simple Notification Service」を参照してください。

このトピックでは、Amazon SNS を通じてモバイルプッシュ通知を受け取るための、AWS SDK for Unity sample app の SNSExample.unity の設定について説明します。

SNSExample.unity サンプルを使用して、iOS と Android アプリの両方を作成できます。iOS と Android の設定手順が異なります。ターゲットとするプラットフォームの適切なセクションをお読みください。

前提条件

このソリューションの使用の前提条件として以下が必要です。

SNS のアクセス許可を設定

Cognito Identity Pool を作成すると、2 つの IAM ロールが生成されます。

  • Cognito/_<Identity-Pool-Name>Auth_DefaultRole - 認証されたユーザーに対するデフォルトの IAM ロール

  • Cognito/_<Identity-Pool-Name>Unauth_DefaultRole - 未認証ユーザーに対するデフォルトの IAM ロール

Amazon SNS サービスへのアクセス権限をこれらのロールに追加する必要があります。これを実行するには:

  1. IAM コンソールを参照し、設定する IAM ロールを選択します。

  2. [ポリシーのアタッチ] をクリック後、AmazonSNSFullAccess ポリシーを選択し、[ポリシーのアタッチ] をクリックします。

注記

本番環境では、AmazonSNSFullAccess を使用することはお勧めできませんが、ここでは使用して迅速に稼働させます。IAM ロールのアクセス許可を指定する方法については、「IAM ロールのアクセス許可の概要」を参照してください。

iOS 前提条件

  • Apple iOS 開発者プログラムのメンバーシップ

  • 署名 ID を生成する

  • プッシュ通知用に設定されたプロビジョニングプロファイルを作成する

プッシュ通知を受け取るには、物理デバイスでアプリを実行する必要があります。デバイスでアプリを実行するには、Apple iOS Developer Program メンバーシップのメンバーシップが必要です。メンバーシップを取得したら、Xcode を使用して署名 ID を生成できます。詳細については、Apple の App ディストリビューションクイックスタートドキュメントを参照してください。次に、プッシュ通知用に設定されたプロビジョニングプロファイルの詳細が必要になります。Apple の Configuring Push Notifications ドキュメントを参照してください。

Android の前提条件

  • Android SDK のインストール

  • JDK のインストール

  • android-support-v4.jar

  • google-play-services.jar

Unity Sample App for iOS の設定

Unity エディタを開き、新しいプロジェクトを作成します。[Assets (アセット)]/[Import Package (パッケージのインポート)]/[Custom Package (カスタムパッケージ)] を選択し、aws-unity-sdk-sns-2.0.0.1.unity パッケージを選択して、AWS SDK for Unity パッケージをインポートします。[Importing Package (パッケージをインポート)] ダイアログで、すべての項目が選択されていることを確認し、[Import (インポート)] をクリックします。

Unity の設定

Unity プロジェクトを設定するには、次の手順を実行します。

  1. [Project] (プロジェクト) ペインで、[Assets] (アセット)/[AWSSDK]/[examples] (例) に移動し、SNSExample シーンを開きます。

  2. [Hierarchy (階層)] ペインで、SNSExample を選択します。

  3. [Inspector (インスペクター)] ペインで、Cognito ID プールの ID を指定します。

  4. [iOS Platform Application ARN (iOS プラットフォームアプリケーション ARN)] のテキストボックスがあることを確認します。この情報は後で生成します。

  5. [Build Settings] (ビルド設定) ダイアログで [File] (ファイル) [Build Settings] (ビルド設定)を選択し、[Scenes in Build] (ビルド内のシーン) リストボックスの下にある [Add Current] (現在のものを追加) ボタンをクリックして、現在のシーンをビルドに追加します。

  6. [Platform (プラットフォーム)] で [iOS] を選択し、[Player Settings… (プレイヤー設定…)] ボタンをクリックします。Unity エディタの [Inspector (インスペクター)] ペインで、iPhone アイコンをクリックしたら、[Identification (識別)] セクションまでスクロールして、[Bundle Identifier (バンドル識別子)] を指定します。

iOS 設定

iOS 固有の設定を構成するようにサンプルを設定するには、次の手順を実行します。

  1. ウェブブラウザで Apple 開発者メンバーセンターに移動し、[Certificates、Identifiers & Profiles (証明書、識別子、プロファイル)] をクリックします。

  2. [iOS Apps] の [Identifiers] をクリック後、その ウェブページの右上隅の + ボタンをクリックして新しい iOS App ID を追加し、App ID の説明を入力します。

  3. [Add ID Suffix (ID サフィックスを追加)] セクションまで下にスクロールし、[Explicit App ID (明示的な App ID)] を選択して、バンドル ID を入力します。

  4. [App Services (アプリサービス)] セクションまで下にスクロールし、[Push Notifications (プッシュ通知)] を選択します。

  5. [Continue (続行)] ボタンをクリックします。

  6. [Submit (送信)] ボタンをクリックします。

  7. [Done (完了)] ボタンをクリックします。

  8. 作成した App ID を選択し、[Edit (編集)] ボタンをクリックします。

  9. [Push Notifications (プッシュ通知)] セクションまで下にスクロールします。

  10. [Development SSL Certificate] の [Create Certificate] ボタンを選択します。

  11. 手順に従って、証明書署名リクエスト (CSR) を作成してアップロードし、Apple Notification Service (APNS) との通信に使用する SSL 証明書をダウンロードします。

  12. [Certificates, Identifiers & Profiles] ウェブページに戻り、[Provisioning Profiles] の下の [All] をクリックします。

  13. 右上隅の + ボタンをクリックし、新しいプロビジョニングプロファイルを追加します。

  14. [iOS App Development (iOS App の開発)] を選択し、[Continue (続行)] ボタンをクリックします。

  15. App ID を選択し、[Continue (続行)] ボタンをクリックします。

  16. 開発者の証明書を選択して、[Continue (続行)] ボタンをクリックします。

  17. デバイスを選択し、[Continue (続行)] ボタンをクリックします。

  18. プロファイル名を入力し、[Generate (生成)] ボタンをクリックします。

  19. プロビジョニングプロファイルをダウンロードしてダブルクリックし、インストールします。

新しいプロファイルを追加した後、Xcode のプロビジョニングプロファイルを更新する必要がある場合があります。Xcode で:

  1. [Xcode]/[Preferences (設定)] メニュー項目を選択します。

  2. [Accounts (アカウント)] タブを選択後、Apple ID を選択し、[View Details (詳細を表示)] をクリックします。

  3. プロビジョニングプロファイルを更新し、新しいプロファイルが表示されていることを確認するには、ダイアログの左下にある更新ボタンをクリックします。

SNS 構成

  1. KeyChain アクセスアプリを実行し、画面の左下にある [My Certificates (自分の証明書)] を選択します。生成した SSL 証明書を右クリックして APNS に接続し、[Export (エクスポート)] を選択すると、ファイル名とパスワードを指定して証明書を保護するように求められます。証明書は、P12 ファイルに保存されます。

  2. ウェブブラウザで SNS コンソールに移動し、画面左側の [アプリケーション] をクリックします。

  3. [プラットフォームアプリケーションの作成] をクリックして、新しい SNS プラットフォームアプリケーションを作成します。

  4. アプリケーション名を入力します。

  5. Apple Push Notification Service Sandbox (APNS_SANDBOX) を選択して、[プッシュ通知プラットフォーム] を選択します。

  6. [ファイルの選択] をクリックし、SSL 証明書をエクスポートした際に作成した P12 ファイルを選択します。

  7. SSL 証明書をエクスポートした際に指定したパスワードを入力し、[認証情報をファイルから読み込み] をクリックします。

  8. [プラットフォームアプリケーションの作成] をクリックします。

  9. 作成したプラットフォームアプリケーションを選択して、アプリケーション ARN をコピーします。

  10. Unity Editor でプロジェクトに戻り、[Hierarchy] ペインの [Inspector] ペインで [SNSExample] を選択し、[iOS Platform Application ARN] というテキストボックスに Platform Application ARN を貼り付けます。

  11. [File (ファイル)]/[Build Settings (ビルド設定)] を選択し、[Build (ビルド)] ボタンをクリックすると Xcode プロジェクトが作成されます。

Xcode の使用

  1. Xcode プロジェクトを開き、プロジェクトナビゲータでプロジェクトを選択します。

  2. バンドルの識別子が正しく設定されていることを確認します。

  3. Apple Developer Account が [Team (チーム)] で指定されていることを確認します。これは、プロビジョニングプロファイルを有効にするために必要です。

  4. プロジェクトをビルドし、デバイス上で実行します。

  5. [Register for Notification (通知に登録)] をタップし、[OK] をタップして通知を許可すると、アプリはデバイストークンを表示します。

SNS コンソールで [アプリケーション] をクリックし、プラットフォームアプリケーションを選択してから、[プラットフォームエンドポイントの作成] をクリックして、アプリで表示されるデバイストークンを入力します。

この時点で、アプリ、APNS、NSN は完全に設定されています。プラットフォームアプリケーションを選択してエンドポイントを選択して、[エンドポイントへの発行] をクリックすると、デバイスにプッシュ通知を送信できます。

Unity Sample (iOS)

このサンプルでは、CognitoAWSCredentials インスタンスを作成して、アプリが AWS サービスを呼び出すことを許可する一時的に限定的な認証情報を生成します。また、AmazonSimpleNotificationServiceClient のインスタンスを作成して SNS と通信します。アプリは、[Register for Notification (通知に登録)] と [Unregister (登録解除)] の 2 つのボタンを表示します。

[Register for Notifications (通知に登録)] ボタンをタップすると、RegisterDevice() メソッドが呼び出されます。RegisterDevice()UnityEngine.iOS.NotificationServices.RegisterForNotifications を呼び出し、これによって使用される通知タイプ (アラート、サウンド、バッジ) が指定されます。また、デバイストークンを取得するために APNS への非同期呼び出しを行います。コールバックが定義されていないため、CheckForDeviceToken が繰り返し呼び出され (最大 10 回)、デバイストークンをチェックします。

トークンが検索されると、AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync() が呼び出されて、SNS プラットフォームアプリケーションのエンドポイントが作成されます。

サンプルはプッシュ通知を受信するように設定されました。SNS コンソールに移動して、ページの左側にある [アプリケーション] をクリックします。プラットフォームアプリケーションを選択した後エンドポイントを選択して、[エンドポイントへの発行] をクリックします。使用するエンドポイントを選択し、[エンドポイントへの発行] をクリックします。テキストボックスにテキストメッセージを入力し、[メッセージの発行] をクリックしてメッセージを発行します。

Unity Sample App for Android の設定

Unity エディタを開き、新しいプロジェクトを作成します。[Assets (アセット)]/[Import Package (パッケージのインポート)]/[Custom Package (カスタムパッケージ)] を選択し、aws-unity-sdk-sns-2.0.0.1.unity パッケージを選択して、AWS SDK for Unity パッケージをインポートします。[Importing Package (パッケージをインポート)] ダイアログで、すべての項目が選択されていることを確認し、[Import (インポート)] をクリックします。

Unity の設定

Unity プロジェクトを設定するには、次の手順を実行します。

  1. [Project] (プロジェクト) ペインで、[Assets] (アセット)/[AWSSDK]/[examples] (例) に移動し、SNSExample シーンを開きます。

  2. [Hierarchy (階層)] ペインで、SNSExample を選択します。

  3. [Inspector (インスペクター)] ペインで、Cognito ID プールの ID を指定します。

  4. [Android Platform Application ARN (Android プラットフォームアプリケーション ARN)] と [Google Console Project ID (Google コンソールプロジェクト ID)] のテキストボックスがあることを確認します。この情報は後で生成します。

  5. [Build Settings] (ビルド設定) ダイアログで [File] (ファイル) [Build Settings] (ビルド設定)を選択し、[Scenes in Build] (ビルド内のシーン) リストボックスの下にある [Add Current] (現在のものを追加) ボタンをクリックして、現在のシーンをビルドに追加します。

  6. [Platform (プラットフォーム)] で [Android] を選択し、[Player Settings… (プレイヤー設定…)] ボタンをクリックします。Unity エディタの [Inspector (インスペクター)] ペインで、Android アイコンをクリックしたら、[Identification (識別)] セクションまでスクロールして、[Bundle Identifier (バンドル識別子)] を指定します。

  7. android-support-v4.jar and google-play-services.jar を、[Project] ペインの [Assets/Plugins/Android] ディレクトリにコピーします。

android-support-v4.jar の場所の詳細については、Android Support Library Setup を参照してください。google-play-services.jar の検索方法の詳細については、Google APIs for Android Setup を参照してください。

Android の設定

まず、新しい Google API プロジェクトを追加します。

  1. ウェブブラウザで、Google 開発者コンソールに移動し、[Create Project (プロジェクトの作成)] を選択します。

  2. [New Project (新規プロジェクト)] ボックスにプロジェクト名を入力し、プロジェクト番号をメモしたら (後で使用します)、[Create (作成)] をクリックします。

次に、プロジェクトの Google クラウド メッセージング (GCM) サービスを有効にします。

  1. Google 開発者コンソールでは、新しいプロジェクトがすでに選択されています。選択されていない場合は、ページの上部にあるドロップダウンメニューからプロジェクトを選択します。

  2. ページ左側のサイドバーから [APIs & auth (API と Auth)] を選択します。

  3. 検索ボックスに「Google Cloud Messaging for Android」と入力し、[Google Cloud Messaging for Android] リンクをクリックします。

  4. [Enable API (API を有効化)] をクリックします。

最後に、API キーを取得します。

  1. Google 開発者コンソールで、[APIs & auth (API と Auth)]>[Credentials (認証情報)] の順に選択します。

  2. [Public API access (パブリック API アクセス)] で、[Create new key (新しいキーを作成)] をクリックします。

  3. [Create a new key (新しいキーの作成)] ダイアログで、[Server key (サーバーキー)] をクリックします。

  4. 表示されたダイアログボックスで [Create (作成)] を選択し、表示された API キーをコピーします。

API キーは、後で認証を実行するために使用します。

SNS 構成

  1. ウェブブラウザで SNS コンソールに移動し、画面左側の [アプリケーション] をクリックします。

  2. [プラットフォームアプリケーションの作成] をクリックして、新しい SNS プラットフォームアプリケーションを作成します。

  3. アプリケーション名を入力します。

  4. [Push notification platform] で [Google Cloud Messaging (GCM)] を選択します。

  5. [API キー] と表示されているテキストボックスに API キーを貼り付けます。

  6. [プラットフォームアプリケーションの作成] をクリックします。

  7. 作成したプラットフォームアプリケーションを選択して、アプリケーション ARN をコピーします。

  8. Unity エディタでプロジェクトに戻り、[Hierarchy] ペインの [Inspector] ペインで [SNSExample] を選択し、プラットフォームアプリケーション ARN を [Android Platform Application ARN] というテキストボックスに貼り付け、プロジェクト番号を [Google Console Project ID] というテキストボックスに入力します。

  9. Android デバイスをコンピュータに接続後、[File (ファイル)]/[Build Settings (ビルド設定)] を選択して、[Build and Run (ビルドして実行)] をクリックします。

Unity Sample (Android)

このサンプルでは、CognitoAWSCredentials インスタンスを作成して、アプリが AWS サービスを呼び出すことを許可する一時的に限定的な認証情報を生成します。また、AmazonSimpleNotificationServiceClient のインスタンスを作成して SNS と通信します。

アプリは、[Register for Notification (通知に登録)] と [Unregister (登録解除)] の 2 つのボタンを表示します。[Register for Notifications (通知に登録)] ボタンをタップすると、RegisterDevice() メソッドが呼び出されます。RegisterDevice()GCM.Register を呼び出し、これによって GCM でアプリが登録されます。GCM はサンプルコード内で定義されたクラスです。これは、GCM でアプリを登録するための非同期呼び出しを行います。

コールバックが呼び出されると、AmazonSimpleNotificationServiceClient.CreatePlatformEndpointAsync が呼び出されて、SNS メッセージを受信するためのプラットフォームエンドポイントが作成されます。

サンプルはプッシュ通知を受信するように設定されました。SNS コンソールに移動して、ページの左側にある [アプリケーション] をクリックします。プラットフォームアプリケーションを選択した後エンドポイントを選択して、[エンドポイントへの発行] をクリックします。使用するエンドポイントを選択し、[エンドポイントへの発行] をクリックします。テキストボックスにテキストメッセージを入力し、[メッセージの発行] をクリックしてメッセージを発行します。