チュートリアル:Azure Notification Hubs を使用して Xamarin.iOS アプリにプッシュ通知を送信するTutorial: Send push notifications to Xamarin.iOS apps using Azure Notification Hubs

概要Overview

このチュートリアルでは、Azure Notification Hubs を使用して iOS アプリケーションにプッシュ通知を送信する方法について説明します。This tutorial shows you how to use Azure Notification Hubs to send push notifications to an iOS application. Apple Push Notification Service (APNS) を使用してプッシュ通知を受信する空の Xamarin.iOS アプリを作成します。You create a blank Xamarin.iOS app that receives push notifications by using the Apple Push Notification service (APNs).

完了すると、通知ハブを使用して、アプリを実行しているすべてのデバイスにプッシュ通知をブロードキャストできます。When you're finished, you are able to use your notification hub to broadcast push notifications to all the devices running your app. 完成したコードは、NotificationHubs アプリ サンプルで参照できます。The finished code is available in the NotificationHubs app sample.

このチュートリアルでは、次のタスクを実行するコードを作成および更新します。In this tutorial, you create/update code to do the following tasks:

  • 証明書の署名要求ファイルを生成するGenerate the certificate signing request file
  • アプリケーションをプッシュ通知に登録するRegister your app for push notifications
  • アプリケーションのプロビジョニング プロファイルを作成するCreate a provisioning profile for the app
  • iOS プッシュ通知向けに通知ハブを構成するConfigure your notification hub for iOS push notifications
  • テスト プッシュ通知を送信するSend test push notifications

前提条件Prerequisites

  • Azure サブスクリプションAzure subscription. Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。If you don't have an Azure subscription, create a free Azure account before you begin.

  • XcodeLatest version of Xcode

  • iOS 10 以降のバージョンに対応するデバイスAn iOS 10 (or later version) compatible device

  • Apple Developer Program メンバーシップApple Developer Program membership.

  • Visual Studio for MacVisual Studio for Mac

    注意

    iOS Push Notifications の構成要件に従って、サンプル アプリケーションのデプロイとテストは、シミュレーターではなく、物理的な iOS デバイス (iPhone または iPad) で行う必要があります。Because of configuration requirements for iOS push notifications, you must deploy and test the sample application on a physical iOS device (iPhone or iPad) instead of in the simulator.

このチュートリアルを完了することは、Xamarin.iOS アプリの他のすべての Notification Hubs チュートリアルの前提条件です。Completing this tutorial is a prerequisite for all other Notification Hubs tutorials for Xamarin.iOS apps.

証明書の署名要求ファイルを生成するGenerate the certificate-signing request file

Apple Push Notification Service (APNs) では、証明書を使用してプッシュ通知を認証します。The Apple Push Notification Service (APNs) uses certificates to authenticate your push notifications. 次の手順に従って、通知を送受信するために必要なプッシュ証明書を作成します。Follow these instructions to create the necessary push certificate to send and receive notifications. これらの概念の詳細については、Apple Push Notification Service の公式ドキュメントを参照してください。For more information on these concepts, see the official Apple Push Notification Service documentation.

証明書署名要求 (CSR) ファイルを生成します。これは、Apple が署名済みのプッシュ証明書を生成するために使用します。Generate the Certificate Signing Request (CSR) file, which Apple uses to generate a signed push certificate.

  1. Mac で、キーチェーン アクセス ツールを実行します。On your Mac, run the Keychain Access tool. これは、Launchpad のユーティリティ フォルダーまたはその他フォルダーから開くことができます。It can be opened from the Utilities folder or the Other folder on the Launchpad.

  2. [キーチェーン アクセス] を選択し、 [証明書アシスタント] を展開して、 [認証局に証明書を要求] を選択します。Select Keychain Access, expand Certificate Assistant, and then select Request a Certificate from a Certificate Authority.

    Keychain Access を使用して新しい証明書を要求する

    注意

    既定では、キーチェーン アクセスによってリスト内の最初の項目が選択されます。By default, Keychain Access selects the first item in the list. これは、 [証明書] カテゴリで、 [Apple Worldwide Developer Relations Certification Authority] が一覧の最初の項目ではない場合に問題になることがあります。This can be a problem if you're in the Certificates category and Apple Worldwide Developer Relations Certification Authority is not the first item in the list. CSR (証明書署名要求) を生成する前に、キー以外の項目があること、または [Apple Worldwide Developer Relations Certification Authority] キーが選択されていることを確認します。Make sure you have a non-key item, or the Apple Worldwide Developer Relations Certification Authority key is selected, before generating the CSR (Certificate Signing Request).

  3. [ユーザーのメール アドレス] を選択し、 [通称] の値を入力します。 [ディスクに保存] を指定したことを確認してから、 [続ける] を選択します。Select your User Email Address, enter your Common Name value, make sure that you specify Saved to disk, and then select Continue. [CA のメール アドレス] は、必要がないため空白のままにします。Leave CA Email Address blank as it isn't required.

    必要な証明書情報

  4. [名前] に CSR ファイルの名前を入力し、 [場所] で保存先を選択してから、 [保存] を選択します。Enter a name for the CSR file in Save As, select the location in Where, and then select Save.

    証明書のファイル名を選択する

    このアクションにより、選択した場所に CSR ファイルが保存されます。This action saves the CSR file in the selected location. 既定の場所は [デスクトップ] です。The default location is Desktop. ファイル用に選択した場所を忘れないでください。Remember the location chosen for the file.

次に、アプリを Apple に登録し、プッシュ通知を有効にして、エクスポートした CSR をアップロードしてプッシュ証明書を作成します。Next, register your app with Apple, enable push notifications, and upload the exported CSR to create a push certificate.

アプリケーションをプッシュ通知に登録するRegister your app for push notifications

プッシュ通知を iOS アプリに送信するには、アプリケーションを Apple に登録すると共に、プッシュ通知にも登録します。To send push notifications to an iOS app, register your application with Apple, and also register for push notifications.

  1. ご自分のアプリをまだ登録していない場合は、Apple Developer Center の iOS Provisioning Portal に移動します。If you haven't already registered your app, browse to the iOS Provisioning Portal at the Apple Developer Center. 自分の Apple ID を使用してポータルにサインインし、 [Identifiers](識別子) を選択します。Sign in to the portal with your Apple ID, and select Identifiers. 次に、 [+] を選択して、新しいアプリを登録します。Then select + to register a new app.

    iOS Provisioning Portal の [App IDs](アプリ ID) ページ

  2. [Register a New Identifier](新しい識別子の登録) 画面で、 [App IDs](アプリ ID) を選択します。On the Register a New Identifier screen, select the App IDs radio button. その後 [続行] を選択します。Then select Continue.

    iOS Provisioning Portal の ID の新規登録ページ

  3. 新しいアプリで次の 3 つの値を更新してから、 [Continue](続行) を選択します。Update the following three values for your new app, and then select Continue:

    • 説明:アプリのわかりやすい名前を入力します。Description: Type a descriptive name for your app.

    • [Bundle ID](バンドル ID) : アプリ ディストリビューション ガイドの説明のとおりに、 <組織 ID>.<製品名> の形式のバンドル ID を入力します。Bundle ID: Enter a Bundle ID of the form Organization Identifier.Product Name as mentioned in the App Distribution Guide. <組織 ID> と <製品名> の値は Xcode プロジェクトを作成する際に使用する組織 ID と製品名に一致させる必要があります。The Organization Identifier and Product Name values must match the organization identifier and product name you use when you create your Xcode project. 次のスクリーンショットでは、NotificationHubs という値が組織 ID として使用され、GetStarted という値が製品名として使用されています。In the following screenshot, the NotificationHubs value is used as an organization identifier and the GetStarted value is used as the product name. Xcode で正しい発行プロファイルが使用されるように、 [Bundle Identifier](バンドル識別子) の値はご自分の Xcode プロジェクトの値と一致させるようにしてください。Make sure the Bundle Identifier value matches the value in your Xcode project, so that Xcode uses the correct publishing profile.

      iOS Provisioning Portal のアプリ ID の登録ページ

    • [Push Notifications](プッシュ通知) : [Capabilities](機能) セクションの [Push Notifications](プッシュ通知) オプションをオンにします。Push Notifications: Check the Push Notifications option in the Capabilities section.

      新しいアプリ ID を登録するフォーム

      このアクションにより、アプリ ID が生成され、その情報を確認するよう求められます。This action generates your App ID and requests that you confirm the information. [Continue](続行) を選択し、 [Register](登録) を選択して新しいアプリ ID を確認します。Select Continue, then select Register to confirm the new App ID.

      新しいアプリ ID を確認する

      [Register](登録) を選択すると、新しいアプリ ID が [Certificates, Identifiers & Profiles](証明書、識別子、およびプロファイル) ページに 1 行の項目として表示されます。After you select Register, you see the new App ID as a line item in the Certificates, Identifiers & Profiles page.

  4. [Certificates, Identifiers & Profiles](証明書、識別子、およびプロファイル) ページの [Identifiers](識別子) で、先ほど作成したアプリ ID の行項目を探し、その行を選択すると [Edit your App ID Configuration](App ID 構成の編集) 画面が表示されます。In the Certificates, Identifiers & Profiles page, under Identifiers, locate the App ID line item that you just created, and select its row to display the Edit your App ID Configuration screen.

Notification Hubs の証明書を作成するCreating a Certificate for Notification Hubs

通知ハブを APNs と連携させるには、証明書が必要です。A certificate is required to enable the notification hub to work with APNS. これには、次の 2 とおりの方法があります。This can be done in one of two ways:

  1. Notification Hubs に直接アップロードできる .p12 を作成します。Create a .p12 that can be uploaded directly to Notification Hub.
  2. トークンベースの認証 ("より新しいアプローチ") に使用できる .p8 を作成します。Create a .p8 that can be used for token-based authentication (the newer approach).

APNS のトークンベース (HTTP/2) 認証」にも記載されているように、新しい方のアプローチには (証明書を使用した場合と比べて) 多くの利点があります。The newer approach has a number of benefits (compared to using certificates) as documented in Token-based (HTTP/2) authentication for APNS. ただし、ここでは両方のアプローチの手順を取り上げています。However, steps have been provided for both approaches.

オプション 1: Notification Hubs に直接アップロードできる .p12 プッシュ証明書を作成するOPTION 1: Creating a .p12 push certificate that can be uploaded directly to Notification Hub

  1. チェック マークが付いた [Push Notifications](プッシュ通知) オプションまで下へスクロールします。証明書を作成するために [Configure](構成) を選択します。Scroll down to the checked Push Notifications option, and then select Configure to create the certificate.

    アプリ ID の編集ページ

  2. [Apple Push Notification service SSL Certificates](Apple Push Notification Service の SSL 証明書) ウィンドウが表示されます。The Apple Push Notification service SSL Certificates window appears. [Development SSL Certificate](開発 SSL 証明書) セクションで [Create Certificate](証明書の作成) ボタンを選択します。Select the Create Certificate button under the Development SSL Certificate section.

    アプリ ID の証明書の作成ボタン

    [Create a new Certificate](新しい証明書の作成) 画面が表示されます。The Create a new Certificate screen is displayed.

    注意

    このチュートリアルでは、一意のデバイス トークンを生成するためにアプリで使用される開発証明書を使用します。This tutorial uses a development certificate, which your app uses to generate a unique device token. 運用証明書の場合も同じ処理を行います。The same process is used when registering a production certificate. 通知の送信と同じ証明書の種類を使用するようにします。Just make sure that you use the same certificate type when sending notifications.

  3. [Choose File](ファイルの選択) を選択して、最初のタスクで CSR ファイルを保存した場所を参照し、証明書名をダブルクリックして読み込みます。Select Choose File, browse to the location where you saved the CSR file from the first task, and then double-click the certificate name to load it. その後 [続行] を選択します。Then select Continue.

  4. ポータルで証明書が作成されたら、 [Download](ダウンロード) ボタンを選択します。After the portal creates the certificate, select the Download button. この証明書を保存し、この保存場所を覚えておいてください。Save the certificate, and remember the location to which it's saved.

    生成された証明書のダウンロード ページ

    証明書がダウンロードされ、自分のコンピューターのダウンロード フォルダーに保存されます。The certificate is downloaded and saved to your computer in your Downloads folder.

    Downloads フォルダーの証明書ファイルを見つける

    注意

    既定では、ダウンロードした開発証明書の名前は aps_development.cer になっています。By default, the downloaded development certificate is named aps_development.cer.

  5. ダウンロードしたプッシュ証明書 aps_development.cer をダブルクリックします。Double-click the downloaded push certificate aps_development.cer. このアクションで、以下の図のように、新しい証明書がキーチェーンにインストールされます:This action installs the new certificate in the Keychain, as shown in the following image:

    新しい証明書が表示されたキーチェーン アクセス証明書リスト

    注意

    証明書の名前は場合によって異なりますが、名前の前には Apple Development iOS Push Services が付けられます。Although the name in your certificate might be different, the name will be prefixed with Apple Development iOS Push Services.

  6. Keychain Access の [Certificates] カテゴリで、作成した新しいプッシュ証明書を右クリックします。In Keychain Access, right-click the new push certificate that you created in the Certificates category. [書き出す] を選択し、ファイルに名前を付けて、 .p12 形式を選択します。次に、 [保存] を選択します。Select Export, name the file, select the .p12 format, and then select Save.

    p12 形式として証明書をエクスポートする

    パスワードを使用して証明書を保護することもできますが、これはオプションです。You can choose to protect the certificate with a password, but this is optional. パスワードの作成を省略する場合は、 [OK] をクリックします。Click OK if you want to bypass password creation. エクスポートした .p12 証明書のファイル名と場所を書き留めます。Make a note of the file name and location of the exported .p12 certificate. これらは、APNs での認証を有効にするために使用されます。They are used to enable authentication with APNs.

    注意

    実際の .p12 ファイルの名前と場所は、このチュートリアルの図に示されているものと異なる場合があります。Your .p12 file name and location might be different than what is pictured in this tutorial.

オプション 2: トークンベースの認証に使用できる .p8 証明書を作成するOPTION 2: Creating a .p8 certificate that can be used for token-based authentication

  1. 次の情報をメモしておきます。Make note of the following details:

    • アプリ ID プレフィックス (チーム ID)App ID Prefix (this is a Team ID)
    • バンドル IDBundle ID
  2. [Certificates, Identifiers & Profiles](証明書、識別子、およびプロファイル) に戻って [Keys](キー) をクリックします。Back in Certificates, Identifiers & Profiles, click Keys.

    注意

    APNS 用に構成されたキーが既にある場合は、作成直後にダウンロードした .p8 証明書を再利用できます。If you already have a key configured for APNS, you can re-use the .p8 certificate that you downloaded right after it was created. その場合、手順 3. から手順 5. は無視してかまいません。If so, you can ignore steps 3 through 5.

  3. [ + ] ボタン (または [Create a key](キーの作成) ボタン) をクリックして新しいキーを作成します。Click the + button (or the Create a key button) to create a new key.

  4. [Key Name](キー名) に適切な値を入力し、 [Apple Push Notifications service (APNs)] オプションをオンにして、 [Continue](続行) をクリックし、次の画面で [Register](登録) をクリックします。Provide a suitable Key Name value, then check the Apple Push Notifications service (APNs) option, and then click Continue, followed by Register on the next screen.

  5. [Download](ダウンロード) をクリックして .p8 ファイル (AuthKey_ で始まるファイル) を安全なローカル ディレクトリに移動し、 [Done](完了) をクリックします。Click Download and then move the .p8 file (prefixed with AuthKey_) to a secure local directory, then click Done.

    注意

    .p8 ファイルは必ず安全な場所に保管してください (さらにバックアップを保存すること)。Be sure to keep your .p8 file in a secure place (and save a backup). キーのダウンロード後は、サーバー コピーが削除されるため、再ダウンロードすることはできません。After downloading your key, it cannot be re-downloaded as the server copy is removed.

  6. [Keys](キー) で、先ほど作成したキー (または既存のキーを使用するように選択した場合はそのキー) をクリックします。On Keys, click on the key that you just created (or an existing key if you have chosen to use that instead).

  7. [Key ID](キー ID) の値をメモしておきます。Make note of the Key ID value.

  8. 任意の適切なアプリケーション (Visual Studio Code など) で .p8 証明書を開き、キーの値をメモします。Open your .p8 certificate in a suitable application of your choice such as Visual Studio Code then make note of the key value. -----BEGIN PRIVATE KEY----------END PRIVATE KEY----- で挟まれた値が該当します。This is the value between -----BEGIN PRIVATE KEY----- and -----END PRIVATE KEY----- .

    -----BEGIN PRIVATE KEY-----
    <key_value>
    -----END PRIVATE KEY-----
    

    注意

    これは、後で Notification Hub の構成に使用するトークン値です。This is the token value that will be used later to configure Notification Hub.

以上の手順を終えると、次の情報が確認済みとなります。これらの情報は、後出の「APNs 情報を使用して通知ハブを構成する」で使用します。At the end of these steps you should have the following information for use later in Configure your notification hub with APNs information:

  • チーム ID (手順 1. を参照)Team ID (see step 1)
  • バンドル ID (手順 1. を参照)Bundle ID (see step 1)
  • キー ID (手順 7. を参照)Key ID (see step 7)
  • トークン値 (.p8 キー値) (手順 8. を参照)Token value i.e. the .p8 key value (see step 8)

アプリケーションのプロビジョニング プロファイルを作成するCreate a provisioning profile for the app

  1. iOS Provisioning Portal に戻り、 [Certificates, Identifiers & Profiles](証明書、識別子、およびプロファイル) を選択します。左側のメニューから [Profiles](プロファイル) を選択し、 [+] を選択して新しいプロファイルを作成します。Return to the iOS Provisioning Portal, select Certificates, Identifiers & Profiles, select Profiles from the left menu, and then select + to create a new profile. [Register a New Provisioning Profile](新しいプロビジョニング プロファイルの登録) 画面が表示されます。The Register a New Provisioning Profile screen appears.

  2. [Development](開発) で、プロビジョニング プロファイルの種類として [iOS App Development](iOS アプリ開発) を選択し、 [Continue](続行) を選択します。Select iOS App Development under Development as the provisioning profile type, and then select Continue.

    プロビジョニング プロファイル リスト

  3. 次に、 [App ID](アプリ ID) ドロップダウン リストで、自分が作成したアプリ ID を選択し、 [Continue](続行) を選択します。Next, select the app ID you created from the App ID drop-down list, and select Continue.

    アプリ ID を選択する

  4. [Select certificates](証明書の選択) ウィンドウで、コード署名に使用する開発証明書を選択し、 [Continue](続行) を選択します。In the Select certificates window, select the development certificate that you use for code signing, and select Continue. この証明書は、作成したプッシュ証明書ではありません。This certificate isn't the push certificate you created. 存在しない場合は、作成する必要があります。If one does not exist, you must create it. 証明書が存在する場合は、次の手順に進みます。If a certificate does exist, skip to the next step. 開発証明書が存在しない場合に証明書を作成するには:To create a development certificate if one does not exist:

    1. "No Certificates are available (利用可能な証明書がありません) " と表示されたら、 [Create Certificate](証明書の作成) を選択します。If you see No Certificates are available, select Create Certificate.
    2. [Software](ソフトウェア) セクションで、 [Apple Development](Apple 開発) を選択します。In the Software section, select Apple Development. その後 [続行] を選択します。Then select Continue.
    3. [Create a New Certificate](新しい証明書の作成) 画面で、 [Choose File](ファイルの選択) を選択します。In the Create a New Certificate screen, select Choose File.
    4. 先ほど作成した証明書署名要求証明書を参照して選択し、 [Open](開く) を選択します。Browse to the Certificate Signing Request certificate you created earlier, select it, and then select Open.
    5. [続行] をクリックします。Select Continue.
    6. 開発証明書をダウンロードします。この保存場所を覚えておいてください。Download the development certificate, and remember the location to which it's saved.
  5. [Certificates, Identifiers & Profiles](証明書、識別子、およびプロファイル) ページに戻り、左側のメニューから [Profiles](プロファイル) を選択し、 [+] を選択して新しいプロファイルを作成します。Return to the Certificates, Identifiers & Profiles page, select Profiles from the left menu, and then select + to create a new profile. [Register a New Provisioning Profile](新しいプロビジョニング プロファイルの登録) 画面が表示されます。The Register a New Provisioning Profile screen appears.

  6. [Select certificates](証明書の選択) ウィンドウで、先ほど作成した開発証明書を選択します。In the Select certificates window, select the development certificate that you just created. その後 [続行] を選択します。Then select Continue.

  7. 次に、テストに使用するデバイスを選択し、 [Continue](続行) を選択します。Next, select the devices to use for testing, and select Continue.

  8. 最後に、 [Provisioning Profile Name](プロビジョニング プロファイル名) でプロファイルの名前を選択し、 [Generate](生成) を選択します。Finally, choose a name for the profile in Provisioning Profile Name, and select Generate.

    プロビジョニング プロファイル名を選択する

  9. 新しいプロビジョニング プロファイルが作成されたら、 [Download](ダウンロード) を選択します。When the new provisioning profile is created, select Download. この保存場所を覚えておいてください。Remember the location to which it's saved.

  10. プロビジョニング プロファイルの場所を参照し、それをダブルクリックして Xcode 開発マシンにインストールします。Browse to the location of the provisioning profile, and then double-click it to install it on your Xcode development machine.

通知ハブを作成するCreate a notification hub

このセクションでは、通知ハブを作成し、.p12 プッシュ証明書またはトークンベースの認証を使用して APNs での認証を構成します。In this section, you create a notification hub and configure authentication with APNs by using either the .p12 push certificate or token-based authentication. 既に作成した通知ハブを使用する場合は、手順 5. に進んでください。If you want to use a notification hub that you've already created, you can skip to step 5.

  1. Azure portal にサインインするSign in to the Azure portal.

  2. 左側のメニューで [すべてのサービス] を選択し、 [モバイル] セクションの [Notification Hubs] を選択します。Select All services on the left menu, and then select Notification Hubs in the Mobile section. サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。Select the star icon next to the service name to add the service to the FAVORITES section on the left menu. Notification Hubs[お気に入り] に追加した後、左側のメニューでそれを選択します。After you add Notification Hubs to FAVORITES, select it on the left menu.

    Azure portal - Notification Hubs を選択する

  3. [Notification Hubs] ページで、ツール バーの [追加] を選択します。On the Notification Hubs page, select Add on the toolbar.

    Notification Hubs - [追加] ツール バー ボタン

  4. [Notification Hub] ページで、次の手順のようにします。On the Notification Hub page, do the following steps:

    1. [通知ハブ] に名前を入力します。Enter a name in Notification Hub.

    2. [新しい名前空間の作成] に名前を入力します。Enter a name in Create a new namespace. 名前空間には、少なくとも 1 つのハブが存在します。A namespace contains one or more hubs.

    3. [場所] ドロップダウン リスト ボックスで値を選択します。Select a value from the Location drop-down list box. この値には、ハブを作成する場所を指定します。This value specifies the location in which you want to create the hub.

    4. [リソース グループ] で既存のリソース グループを選択します。または、新しいリソース グループに名前を作成します。Select an existing resource group in Resource Group, or create a name for a new resource group.

    5. 作成 を選択します。Select Create.

      Azure Portal - 通知ハブのプロパティを設定

  5. [通知] (ベルのアイコン) を選択し、 [リソースに移動] を選択します。Select Notifications (the bell icon), and then select Go to resource. [Notification Hubs] ページの一覧を最新の情報に更新して、お使いの通知ハブを選択することもできます。You can also refresh the list on the Notification Hubs page and select your hub.

    Azure Portal > [通知] > [リソースに移動]

  6. リストから [アクセス ポリシー] を選択します。Select Access Policies from the list. 使用可能な 2 つの接続文字列を書き留めてください。Note that the two connection strings are available to you. これらは、後でプッシュ通知を処理するために必要になります。You'll need them later to handle push notifications.

    重要

    DefaultFullSharedAccessSignature ポリシーはアプリケーションで使用 "しない" でください。Do not use the DefaultFullSharedAccessSignature policy in your application. これの使用が意図されているのはバックエンドだけです。This is meant to be used in your back end only.

    Azure Portal - 通知ハブの接続文字列

APNs 情報を使用して通知ハブを構成するConfigure your notification hub with APNs information

[Notification Services][Apple (APNS)] を選択し、先ほど「Notification Hubs の証明書を作成する」セクションで選択したアプローチに応じて適切な手順に従います。Under Notification Services, select Apple (APNS) then follow the appropriate steps based on the approach you chose previously in the Creating a Certificate for Notification Hubs section.

注意

App Store またはアドホック配布プロファイルを使用してアプリをビルドする場合は、 [Application Mode](アプリケーション モード)[Production](運用) を使用します。If you build your app with App Store or Ad-Hoc distribution profile, use the Production for Application Mode. これにより、デバイスは、ストアからアプリを購入したユーザーにプッシュ通知を送信できるようになります。This will allow your device to send push notifications to users who purchased your app from the store.

オプション 1: .p12 プッシュ証明書を使用するOPTION 1: Using a .p12 push certificate

  1. [Certificate] を選択します。Select Certificate.

  2. ファイル アイコンを選択します。Select the file icon.

  3. 先ほどエクスポートした .p12 ファイルを選択し、 [Open](開く) を選択します。Select the .p12 file that you exported earlier, and then select Open.

  4. 必要に応じて、適切なパスワードを指定します。If required, specify the correct password.

  5. [サンドボックス] モードを選択します。Select Sandbox mode.

    Azure portal で APNs 証明書を構成する

  6. [保存] を選択します。Select Save.

オプション 2: トークンベースの認証を使用するOPTION 2: Using token-based authentication

  1. [トークン] を選択します。Select Token.

  2. 先ほど取得した次の値を入力します。Enter the following values that you acquired earlier:

    • キー IDKey ID
    • バンドル IDBundle ID
    • チーム IDTeam ID
    • トークンToken
  3. [サンドボックス] を選択します。Choose Sandbox

  4. [保存] を選択します。Select Save.

これで、APNs での通知ハブの構成が完了しました。You've now configured your notification hub with APNs. 接続文字列を使用してアプリを登録し、プッシュ通知を送信することもできます。You also have the connection strings to register your app and send push notifications.

通知ハブにアプリケーションを接続するConnect your app to the notification hub

新しいプロジェクトを作成するCreate a new project

  1. Visual Studio で、新しい iOS プロジェクトを作成し、 [単一ビュー アプリ] テンプレートを選択し、 [次へ] をクリックします。In Visual Studio, create a new iOS project and select the Single View App template, and click Next

    Visual Studio - アプリケーションの種類を選択する

  2. アプリケーション名と組織の識別子を入力し、 [次へ][作成] の順にクリックします。Enter your App Name and Organization identifier, then click Next, then Create

  3. ソリューション ビューから [Info.plist] をダブルクリックし、 [ID] で、バンドル識別子がプロビジョニング プロファイルを作成するときに使用したものに一致することを確認します。From the Solution view, double-click Info.plist and under Identity make sure your Bundle Identifier matches the one used when creating your provisioning profile. [署名] で、 [チーム] に Developer アカウントを選択し、[Automatically manage signing](署名を自動的に管理する) をオンにし、署名証明書とプロビジョニング プロファイルが自動的に選択されることを確認します。Under Signing ensure that your Developer account is selected under Team, "Automatically manage signing" is selected and your Signing Certificate and Provisioning Profile are automatically selected.

    Visual Studio - iOS アプリの構成

  4. ソリューション ビューで、Entitlements.plist をダブルクリックし、 [プッシュ通知を有効にする] チェック ボックスがオンになっていることを確認します。From the Solution view, double-click the Entitlements.plist and ensure that Enable Push Notifications is checked.

    Visual Studio - iOS エンタイトルメントの構成

  5. Azure Messaging パッケージを追加します。Add the Azure Messaging package. ソリューション ビューでプロジェクトを右クリックし、 [追加] > [NuGet パッケージの追加] を選択します。In the Solution view, right-click the project and select Add > Add NuGet Packages. Xamarin.Azure.NotificationHubs.iOS を検索し、パッケージをプロジェクトに追加します。Search for Xamarin.Azure.NotificationHubs.iOS and add the package to your project.

  6. 新しいファイルをクラスに追加し、Constants.cs と名前を付け、次の変数を追加し、文字列リテラルのプレースホルダーを hubname とメモしておいた DefaultListenSharedAccessSignature に置き換えます。Add a new file to your class, name it Constants.cs and add the following variables and replace the string literal placeholders with the hubname and the DefaultListenSharedAccessSignature noted earlier.

    // Azure app-specific connection string and hub path
    public const string ListenConnectionString = "<Azure DefaultListenSharedAccess Connection String>";
    public const string NotificationHubName = "<Azure Notification Hub Name>";
    
  7. AppDelegate.cs に次の using ステートメントを追加します。In AppDelegate.cs, add the following using statement:

    using WindowsAzure.Messaging;
    using UserNotifications
    
  8. SBNotificationHub のインスタンスを宣言します。Declare an instance of SBNotificationHub:

    private SBNotificationHub Hub { get; set; }
    
  9. AppDelegate.cs で、次のコードと一致するように FinishedLaunching() を更新します。In AppDelegate.cs, update FinishedLaunching() to match the following code:

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
        {
            UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound,
                                                                    (granted, error) => InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications));
        }
        else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
        {
            var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                    UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                    new NSSet());
    
            UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
            UIApplication.SharedApplication.RegisterForRemoteNotifications();
        }
        else
        {
            UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
            UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
        }
    
        return true;
    }
    
  10. AppDelegate.cs で、RegisteredForRemoteNotifications() メソッドをオーバーライドします。In AppDelegate.cs, override the RegisteredForRemoteNotifications() method:

    public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
    {
        Hub = new SBNotificationHub(Constants.ListenConnectionString, Constants.NotificationHubName);
    
        Hub.UnregisterAll (deviceToken, (error) => {
            if (error != null)
            {
                System.Diagnostics.Debug.WriteLine("Error calling Unregister: {0}", error.ToString());
                return;
            }
    
            NSSet tags = null; // create tags if you want
            Hub.RegisterNative(deviceToken, tags, (errorCallback) => {
                if (errorCallback != null)
                    System.Diagnostics.Debug.WriteLine("RegisterNative error: " + errorCallback.ToString());
            });
        });
    }
    
  11. AppDelegate.cs で、ReceivedRemoteNotification() メソッドをオーバーライドします。In AppDelegate.cs, override the ReceivedRemoteNotification() method:

    public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
    {
        ProcessNotification(userInfo, false);
    }
    
  12. AppDelegate.cs で、ProcessNotification() メソッドを作成します。In AppDelegate.cs, create the ProcessNotification() method:

    void ProcessNotification(NSDictionary options, bool fromFinishedLaunching)
    {
        // Check to see if the dictionary has the aps key.  This is the notification payload you would have sent
        if (null != options && options.ContainsKey(new NSString("aps")))
        {
            //Get the aps dictionary
            NSDictionary aps = options.ObjectForKey(new NSString("aps")) as NSDictionary;
    
            string alert = string.Empty;
    
            //Extract the alert text
            // NOTE: If you're using the simple alert by just specifying
            // "  aps:{alert:"alert msg here"}  ", this will work fine.
            // But if you're using a complex alert with Localization keys, etc.,
            // your "alert" object from the aps dictionary will be another NSDictionary.
            // Basically the JSON gets dumped right into a NSDictionary,
            // so keep that in mind.
            if (aps.ContainsKey(new NSString("alert")))
                alert = (aps [new NSString("alert")] as NSString).ToString();
    
            //If this came from the ReceivedRemoteNotification while the app was running,
            // we of course need to manually process things like the sound, badge, and alert.
            if (!fromFinishedLaunching)
            {
                //Manually show an alert
                if (!string.IsNullOrEmpty(alert))
                {
                    var myAlert = UIAlertController.Create("Notification", alert, UIAlertControllerStyle.Alert);
                    myAlert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null));
                    UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(myAlert, true, null);
                }
            }
        }
    }
    

    注意

    ネットワーク接続がないなどの状況に対処するために、FailedToRegisterForRemoteNotifications() をオーバーライドすることを選択できます。You can choose to override FailedToRegisterForRemoteNotifications() to handle situations such as no network connection. これは、ユーザーがオフラインモード (Airplane など) でアプリケーションを起動し、アプリケーション固有のプッシュメッセージングシナリオを処理する場合に特に重要です。This is especially important where the user might start your application in offline mode (for example, Airplane) and you want to handle push messaging scenarios specific to your app.

  13. デバイスでアプリケーションを実行します。Run the app on your device.

テスト プッシュ通知を送信するSend test push notifications

アプリの通知の受信をテストするには、Azure Portal[テスト送信] オプションを使用します。You can test receiving notifications in your app with the Test Send option in the Azure portal. これは、デバイスにテスト プッシュ通知を送信します。It sends a test push notification to your device.

Azure Portal - テスト送信

プッシュ通知は通常、互換性のあるライブラリを使用して Mobile Apps などのバックエンド サービスや ASP.NET に送信されます。Push notifications are normally sent in a back-end service like Mobile Apps or ASP.NET using a compatible library. ライブラリがバックエンドに使用できない場合は、REST API を直接使用して通知メッセージを送信することもできます。If a library is not available for your back-end, you can also use the REST API directly to send notification messages.

次のステップNext steps

このチュートリアルでは、バックエンドに登録されているすべての iOS デバイスにブロードキャスト通知を送信しました。In this tutorial, you sent broadcast notifications to all your iOS devices registered with the backend. 特定の iOS デバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。To learn how to push notifications to specific iOS devices, advance to the following tutorial: