Xamarin.iOS アプリ用 Azure Mobile Engagement の使用

このトピックでは、Azure Mobile Engagement を使用してアプリの使用状況を把握し、Xamarin.iOS アプリケーションのセグメント化されたユーザーにプッシュ通知を送信する方法について説明します。 このチュートリアルでは、基本的なデータを収集し、Apple Push Notification System (APNS) を使ってプッシュ通知を受信する空の Xamarin.iOS アプリケーションを作成します。

注意

Azure Mobile Engagement サービスは 2018 年 3 月に停止予定であり、現在は既存のお客様のみご利用いただけます。 詳細については、「Mobile Engagement」を参照してください。

このチュートリアルには、次のものが必要です。

注意

このチュートリアルを完了するには、アクティブな Azure アカウントが必要です。 アカウントがない場合は、無料試用版のアカウントを数分で作成することができます。 詳細については、「Azure の無料試用版サイト」をご覧ください。

iOS アプリ用に Mobile Engagement を設定する

  1. Azure Portal にログオンします。
  2. [新規][Web + モバイル][Mobile Engagement] の順にクリックします。

  3. 表示される [New Mobile Engagement App Collection (新しい Mobile Engagement アプリ コレクション)] ブレードで、Azure クラシック ポータルで作成するように、アプリではなくアプリ コレクションを作成します。 次の情報を入力します。

    • 名前: 名前 of your アプリケーション コレクション
    • プラットフォーム: クリックすると開く [プラットフォーム] ブレードでアプリのターゲット プラットフォームを選択します。 例: アプリを iOS と Android の両方に対応させる場合は、両方のプラットフォームを選択すると、このアプリ コレクションの下に 2 つのアプリが作成されます。

    • サブスクリプション: Azure サブスクリプションを選択します。
    • リソース グループ: この Azure リソース (Mobile Engagement アプリ コレクション) を追加する Azure リソース グループを選択します。 新しいリソース グループを作成することもできます。
    • 場所: このアプリ コレクションとアプリについてのデータが格納されるリージョン。
  4. [参照] をクリックし、"Mobile Engagement" を検索して Mobile Engagement アプリ コレクションを参照します。

  5. Mobile Engagement アプリ コレクションの一覧が表示されるので、アプリ コレクションを作成した同じ Azure サブスクリプションがあることを確認します。

  6. 前の手順で作成したアプリ コレクションをクリックして、アプリ コレクション リソースのブレードを開きます。ブレードには、このアプリ コレクション内に存在するさまざまなアプリが表示されます。

  7. 開発対象とするプラットフォーム向けに作成したアプリをクリックします。

  8. 上部の [接続情報] コマンド ボタンをクリックして [接続情報] ブレードを開き、そこに表示される接続文字列をコピーします。

アプリを Mobile Engagement のバックエンドに接続します

このチュートリアルでは、データを収集してプッシュ通知を送信するために必要な最小限のセットである「基本的な統合」について説明します。

統合のデモンストレーションを行うために、Xamarin で基本的なアプリを作成します。

新しい Xamarin.iOS プロジェクトを作成する

  1. Xamarin Studio を起動します。 [File (ファイル)] -> [New (新規)] -> [Solution (ソリューション)] の順に移動します。

  2. [Single View App (単一ビュー アプリ)] を選択し、選択されている言語が [C#] であることを確認してから、[Next (次へ)] をクリックします。

  3. [App Name (アプリ名)][Organization Identifier (組織 ID)] を入力し、[Next (次へ)] をクリックします。

    重要

    iOS アプリのデプロイに最終的に使用する発行プロファイルでは、ここに表示されたバンドル識別子と完全に一致するアプリ ID を必ず使用してください。

  4. 必要に応じて [Project Name (プロジェクト名)][Solution Name (ソリューション名)][Location (位置)] を変更し、[Create (作成)] をクリックします。

Xamarin Studio で、Mobile Engagement の統合先のデモ アプリが作成されます。

アプリを Mobile Engagement のバックエンドに接続する

  1. [Solution (ソリューション)] ウィンドウの Packages フォルダーを右クリックし、[Add Packages (パッケージの追加)] を選択します。

  2. Microsoft Azure Mobile Engagement Xamarin SDK を探してソリューションに追加します。

  3. AppDelegate.cs を開き、次の using ステートメントを追加します。

     using Microsoft.Azure.Engagement.Xamarin;
    
  4. FinishedLaunching メソッドに、Mobile Engagement バックエンドとの接続を初期化する次のコードを追加します。 ConnectionStringを必ず追加してください。 また、次のコードでは、Mobile Engagement SDK によって追加されるダミーの NotificationIcon も使用されています。これは、置き換えることができます。

     EngagementConfiguration config = new EngagementConfiguration {
                     ConnectionString = "YourConnectionStringFromAzurePortal",
                     NotificationIcon = UIImage.FromBundle("close")
                 };
     EngagementAgent.Init (config);
    

リアルタイム監視の有効化

データを送信してユーザーがアクティブであることを確認するには、少なくとも 1 つの画面を Mobile Engagement のバックエンドに送信する必要があります。

  1. ViewController.cs を開き、次の using ステートメントを追加します。

     using Microsoft.Azure.Engagement.Xamarin;
    
  2. ViewController の継承元となるクラスを UIViewController から EngagementViewController に置き換えます。

リアルタイム監視を使用してアプリを接続する

このセクションでは、Mobile Engagement のリアルタイム監視機能を使用して、アプリを Mobile Engagement バックエンドに接続する方法について説明します。

  1. Azure Mobile Engagement アカウントで、Mobile Engagement ポータルで監視および管理するアプリを選択していることを確認します。 下部にある [エンゲージ] ボタンをクリックして、Mobile Engagement ポータルに移動します。

  2. Mobile Engagement ポータルに移動します。 [監視] タブが選択されていない場合は、 [監視]をクリックします。
  3. モニターがアプリを起動するデバイスをリアルタイムで表示する準備が整いました。
  4. アプリを起動します。 統合が適切に行われていれば、モニターには 1 つのセッションが表示されます。これは、アプリが Mobile Engagement バックエンドに接続され、バックエンドにデータを送信していることを意味します。

プッシュ通知とアプリ内メッセージングを有効にする

Mobile Engagement により、ユーザーと通信を行い、キャンペーンに関するプッシュ通知とアプリ内メッセージングを届けることができます。 このモジュールは、Mobile Engagement ポータルで REACH として呼び出されます。 次のセクションでは、それらを受信するようにアプリをセットアップします。

アプリケーション デリゲートを変更する

  1. AppDelegate.cs を開き、次の using ステートメントを追加します。

     using System; 
    
  2. ここで、FinishedLaunching メソッド内の EngagementAgent.init(...) の後に、プッシュ メッセージを登録する次のコードを追加します。

     if (UIDevice.CurrentDevice.CheckSystemVersion(8,0))
     {
         var pushSettings = UIUserNotificationSettings.GetSettingsForTypes (
             (UIUserNotificationType.Badge |
                 UIUserNotificationType.Sound |
                 UIUserNotificationType.Alert),
             null);
         UIApplication.SharedApplication.RegisterUserNotificationSettings (pushSettings);
         UIApplication.SharedApplication.RegisterForRemoteNotifications ();
     }
     else
     {
         UIApplication.SharedApplication.RegisterForRemoteNotificationTypes (
             UIRemoteNotificationType.Badge |
             UIRemoteNotificationType.Sound |
             UIRemoteNotificationType.Alert);
     }
    
  3. 最後に、次のメソッドを更新するか、追加します。

     public override void DidReceiveRemoteNotification (UIApplication application, NSDictionary userInfo, 
         Action<UIBackgroundFetchResult> completionHandler)
     {
         EngagementAgent.ApplicationDidReceiveRemoteNotification(userInfo, completionHandler);
     }
    
     public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
     {
         // Register device token on Engagement
         EngagementAgent.RegisterDeviceToken(deviceToken);
     }
    
     public override void FailedToRegisterForRemoteNotifications(UIApplication application, NSError error)
     {
         Console.WriteLine("Failed to register for remote notifications: Error '{0}'", error);
     }
    
  4. ソリューションの Info.plist ファイルで、バンドル識別子が、Apple Dev Center のプロビジョニング プロファイルにあるアプリ ID と一致していることを確認します。

  5. その Info.plist ファイルで、[Enable Background Modes (バックグラウンド モードを有効にする)][Remote Notifications (リモート通知)] のチェック ボックスがオンになっていることを確認します。

  6. この発行プロファイルに関連付けたデバイスでアプリを実行します。

Mobile Engagement にプッシュ証明書へのアクセスを許可する

Mobile Engagement がユーザーに代わりプッシュ通知を送信できるようにするには、Mobile Engagement に証明書へのアクセスを許可する必要があります。 このためには、証明書を Mobile Engagement ポータルに構成および入力します。 Apple のドキュメント

  1. Mobile Engagement ポータルに移動します。 このプロジェクト用に使用しているアプリを対象にしていることを確認し、下部にある [エンゲージ] ボタンをクリックします。

  2. Engagement ポータルで [設定] ページをクリックします。 このページで、p12 証明書をアップロードするために [ネイティブ プッシュ通知] セクションをクリックします。

  3. p12 を選択してアップロードし、パスワードを入力します

アプリへ通知を送信する

プッシュ通知をアプリに送る簡単なプッシュ通知キャンペーンを作成してみましょう。

  1. Mobile Engagement ポータルで [ リーチ ] タブに移動します。
  2. [新しいお知らせ] をクリックして、プッシュ キャンペーンを作成します。

  3. キャンペーンの最初のフィールドを設定します

    • キャンペーンの 名前 を指定します。
    • [配信時刻] として [アプリ外のみ] を選択します。これはテキストを扱う単純な種類の Apple プッシュ通知です。
    • 通知テキストとして、プッシュ通知の 1 行目になる [タイトル] を入力します。
    • 次に、2 行目になる [メッセージ] を入力します。
  4. スクロール ダウンし、コンテンツ セクションで 通知のみ

  5. 最も基本的なキャンペーンの設定が完了しました。 下にスクロールし、 [作成] ボタンをクリックしてプッシュ通知キャンペーンを保存します。
  6. 最後に、 [アクティブ化] をクリックしてプッシュ通知を送信します。

  7. 次のような通知センターの iOS デバイスで通知を受信することができます。

  8. この iOS デバイスと組み合わせて使用する Apple Watch がある場合は、Apple Watch に通知が表示されます。