SNS を使用してプッシュ通知を受信する (Xamarin iOS) - AWS Mobile SDK

AWSの Mobile SDK for Xamarin が、AWS SDK for .NETに含まれるようになりました。このガイドでは、Mobile SDK for Xamarin のアーカイブバージョンについて説明します。

SNS を使用してプッシュ通知を受信する (Xamarin iOS)

このドキュメントでは、Amazon Simple Notification Service (SNS) および AWS Mobile SDK for .NET and Xamarin を使用して、Xamarin iOS アプリケーションにプッシュ通知を送信する方法について説明します。

プロジェクトのセットアップ

前提条件

このチュートリアルを開始する前に、必ず「AWS Mobile SDK for .NET and Xamarin をセットアップする」の手順をすべて完了する必要があります。

SNS のアクセス許可を設定

AWS Mobile SDK for .NET and Xamarin をセットアップするのステップ 2 に従って、以下のポリシーをアプリケーションのロールにアタッチします。これにより、SNS にアクセスするための適切な権限がアプリケーションに付与されます。

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

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

警告

AmazonSNSFullAccess を本番稼働用環境で使用することは推奨されていません。すばやく起動して実行できるように、こちらの環境を使用します。IAM ロールのアクセス許可を指定する方法については、「IAM ロールのアクセス許可の概要」を参照してください。

Apple iOS 開発者プログラムのメンバーシップを取得する

プッシュ通知を受け取るには、物理デバイスでアプリを実行する必要があります。デバイスでアプリを実行するには、Apple iOS 開発者プログラムのメンバーシップのメンバーシップが必要です。メンバーシップを取得したら、Xcode を使用して署名 ID を生成できます。詳細については、Apple の App ディストリビューションクイックスタートドキュメントを参照してください。

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. [次へ] をクリックします。

  6. 送信 をクリックします。

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

  8. 作成した App ID を選択し、[Edit] をクリックします。

  9. [Push Notifications (プッシュ通知)] セクションまで下にスクロールします。[Development SSL Certificate] の [Create Certificate] を選択します。

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

  11. [Certificates, Identifiers & Profiles] ページに戻ります。[Provisioning Profiles] の [All] をクリックします。

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

  13. [iOS App Development] を選択し、[Continue] をクリックします。

  14. App ID を選択し、[Continue] をクリックします。

  15. 開発者の証明書を選択して、[Continue] をクリックします。

  16. デバイスを選択し、[Continue] をクリックします。

  17. プロファイル名を入力し、[Generate] をクリックします。

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

プッシュ通知用に設定されたプロファイルのプロビジョニングに関する詳細については、Apple のConfiguring Push Notificationsドキュメントを参照してください。

SNS コンソールで証明書を使用してプラットフォーム ARN を作成する

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

  2. SNS コンソールに移動し、画面左側の [Applications] をクリックします。

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

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

  5. [Push notification platform] の [Apple Development] を選択します。

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

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

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

  9. 作成したプラットフォームアプリケーションを選択して、アプリケーション ARN をコピーします。このアプリケーション ARN は、この後の手順で必要になります。

SNS の NuGet パッケージをプロジェクトに追加する

AWS Mobile SDK for .NET and Xamarin をセットアップする」のステップ 4 に従って、Amazon Simple Notification Service の NuGet パッケージをプロジェクトに追加します。

SNS クライアントを作成する

var snsClient = new AmazonSimpleNotificationServiceClient(credentials, region);

アプリケーションにリモート通知を登録する

アプリケーションを登録するには、以下に示すように、UIApplication オブジェクトの RegisterForRemoteNotifications を呼び出します。AppDelegate.cs に以下のコードを配置し、以下に表示されているプラットフォームアプリケーションの ARN を挿入します。

public override bool FinishedLaunching(UIApplication app, NSDictionary options) { // do something var pushSettings = UIUserNotificationSettings.GetSettingsForTypes ( UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null ); app.RegisterUserNotifications(pushSettings); app.RegisterForRemoteNotifications(); // do something return true; } public override void RegisteredForRemoteNotifications(UIApplication application, NSData token) { var deviceToken = token.Description.Replace("<", "").Replace(">", "").Replace(" ", ""); if (!string.IsNullOrEmpty(deviceToken)) { //register with SNS to create an endpoint ARN var response = await SnsClient.CreatePlatformEndpointAsync( new CreatePlatformEndpointRequest { Token = deviceToken, PlatformApplicationArn = "YourPlatformArn" /* insert your platform application ARN here */ }); } }

SNS コンソールからエンドポイントにメッセージを送信する

  1. [SNS コンソール] > [アプリケーション] の順に移動します。

  2. プラットフォームアプリケーションを選択し、エンドポイントを選択したら、[エンドポイントへの発行] をクリックします。

  3. テキストボックスにテキストメッセージを入力し、[メッセージの発行] をクリックしてメッセージを発行します。