チュートリアル:Firebase SDK バージョン 1.0.0-preview1 を使用して Android デバイスにプッシュ通知を送信する

このチュートリアルでは、Azure Notification Hubs と最新版の Firebase Cloud Messaging (FCM) SDK (バージョン 1.0.0-preview1) を使用して Android アプリケーションにプッシュ通知を送信する方法について説明します。 このチュートリアルでは、Firebase Cloud Messaging (FCM) を使用してプッシュ通知を受信する空の Android アプリケーションを作成します。

Note

Firebase Cloud Messaging の非推奨と移行の手順については、「Google Firebase Cloud Messaging の移行」を参照してください。

このチュートリアルの完成したコードは、GitHub からダウンロードできます。

このチュートリアルに含まれる手順は次のとおりです。

  • Android Studio プロジェクトを作成します。
  • Firebase Cloud Messaging をサポートする Firebase プロジェクトを作成します。
  • 通知ハブを作成します。
  • そのハブにアプリを接続します。
  • アプリをテストします。

前提条件

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

Note

Google/Firebase API は Azure China リージョンではサポートされていません。

次のものも必要です。

  • Android Studio の最新バージョンをお勧めします。
  • サポートされる API レベルは 19 以上です。

Android Studio プロジェクトの作成

まず、Android Studio でプロジェクトを作成します。

  1. Android Studio を起動します。

  2. [File](ファイル) を選択し、 [New](新規) を選択して、 [New Project](新しいプロジェクト) を選択します。

  3. [Choose your project](プロジェクトの選択) ページで、 [Empty Activity](空のアクティビティ) を選択してから、 [Next](次へ) を選択します。

  4. [Configure your project](プロジェクトの構成) ページで、次の手順を実行します。

    1. アプリケーションの名前を入力します。
    2. プロジェクト ファイルを保存する場所を指定します。
    3. [完了] を選択します。

    プロジェクトを構成する

FCM をサポートする Firebase プロジェクトを作成する

  1. Firebase コンソールにサインインします。 Firebase プロジェクトがまだない場合は、新しく作成します。

  2. プロジェクトを作成した後、 [Add Firebase to your Android app](Android アプリに Firebase を追加する) を選択します。

    Firebase を追加する

  3. [Android アプリへの Firebase の追加] ページで、次の手順を実行します。

    1. [Android package name](Android パッケージ名) については、お使いのアプリケーションの build.gradle ファイル内にある applicationId の値をコピーします。 この例では com.fabrikam.fcmtutorial1app です。

      パッケージ名を指定する

    2. [アプリの登録] を選択します。

  4. [google-services.json をダウンロード] を選択し、プロジェクトの app フォルダーにファイルを保存して、[次へ] をクリックします。

    Google サービスをダウンロードする

  5. Firebase コンソールで、プロジェクトの歯車アイコンを選択します。 次に、 [Project Settings](プロジェクト設定) を選択します。

    プロジェクト設定

  6. google-services.json ファイルを Android Studio プロジェクトの app フォルダーにダウンロードしていない場合は、このページでダウンロードできます。

  7. [クラウド メッセージング] タブに切り替えます。

  8. 後で使用するために、サーバー キーをコピーし、保存します。 この値を使用して、ハブを構成します。

  9. [Firebase Cloud Messaging] タブに [サーバー キー] が表示されない場合、次の手順を行います。

    1. [Cloud Messaging API (Legacy) Disabled](Cloud Messaging API (レガシ) 無効) という見出しの 3 つのドット メニューを選択します。
    2. Manage API in Google Cloud Console (Google Cloud Console で API を管理する) リンクに従います。
    3. Google Cloud Console で、Google Cloud Messaging API を有効にするボタンを選択します。
    4. 数分待ちます。
    5. Firebase コンソール プロジェクトの [Cloud Messaging] タブに戻り、ページを最新の情報に更新します。
    6. Cloud Messaging API の見出しが [Cloud Messaging API (Legacy) Enabled](Cloud Messaging API (レガシ) 有効) に変わり、現在サーバー キーが表示されていることを確認します。

    [Enable Cloud Messaging API (Legacy)]\(Cloud Messaging API (レガシ) 有効\) を示すポータルのスクリーンショット。

通知ハブを構成する

  1. Azure portal にサインインします。

  2. 左側のメニューで [すべてのサービス] を選択し、 [モバイル] セクションの [Notification Hubs] を選択します。 サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。 Notification Hubs[お気に入り] に追加した後、左側のメニューでそれを選択します。

  3. [Notification Hubs] ページで、ツール バーの [追加] を選択します。

    ハブを追加する

  4. [Notification Hub] ページで、次の手順を実行します。

    1. [通知ハブ] に名前を入力します。

    2. [新しい名前空間の作成] に名前を入力します。 名前空間には、少なくとも 1 つのハブが存在します。

    3. [場所] ボックスの一覧から値を選択します。 この値には、ハブを作成する場所を指定します。

    4. [リソース グループ] で既存のリソース グループを選択するか、新しいリソース グループを作成します。

    5. [作成] を選択します。

      ハブを作成する

  5. [通知] (ベルのアイコン) を選択し、 [リソースに移動] を選択します。 [Notification Hubs] ページの一覧を最新の情報に更新して、お使いの通知ハブを選択することもできます。

    ハブを選択する

  6. リストから [アクセス ポリシー] を選択します。 使用可能な接続文字列が 2 つあることに注意してください。 これらは、後でプッシュ通知を処理するために必要になります。

    アクセス ポリシー

    重要

    アプリケーションで DefaultFullSharedAccessSignature ポリシーを使用しないでください。 このポリシーは、アプリのバックエンドでのみ使用されます。

Firebase Cloud Messaging の設定をハブ用に構成する

  1. 左側のウィンドウの [Settings](設定) で、 [Google (GCM/FCM)] を選択します。

  2. 前に保存した FCM プロジェクトのサーバー キーを入力します。

  3. ツールバーで、 [Save](保存) をクリックします。

    サーバー キー

  4. Azure portal に、ハブが正常に更新されたことを示すメッセージが表示されます。 [Save](保存) ボタンが無効になります。

これで、Firebase Cloud Messaging と連携するように通知ハブが構成されました。 また、デバイスに通知を送信したり、通知を受信するアプリを登録したりするために必要な接続文字列も取得されました。

通知ハブにアプリケーションを接続する

プロジェクトへの Google Play Services の追加

  1. Android Studio で、メニューから [ツール] を選択し、 [SDK Manager] を選択します。

  2. 自分のプロジェクトで使用される Android SDK のターゲット バージョンを選択します。 次に、 [パッケージの詳細ページの表示] を選択します。

    SDK マネージャー

  3. まだインストールされていない場合は、 [Google API] を選択します。

    API

  4. [SDK Tools](SDK ツール) タブに切り替えます。Google Play 開発者サービスをまだインストールしていない場合は、次の図に示すように [Google Play 開発者サービス] を選択します。 次に、 [適用] をクリックしてインストールします。 SDK のパスは後の手順で使用するので、メモしておいてください。

    Play サービス

  5. [Confirm Change](変更の確認) ダイアログ ボックスが表示される場合は、 [OK] を選択します。 コンポーネント インストーラーによって、要求したコンポーネントがインストールされます。 コンポーネントがインストールされた後、 [Finish](完了) を選択します。

  6. [OK] を選択して、 [Settings for New Projects](新しいプロジェクトの設定) ダイアログ ボックスを閉じます。

Azure Notification Hubs ライブラリの追加

  1. アプリの build.gradle ファイルで、dependencies セクションに次の行を追加します。

    implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4'
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.android.volley:volley:1.2.1'
    
  2. dependencies セクションの後に次のリポジトリを追加します。

    dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
         mavenCentral()
         maven { url 'https://example.io' }
     }
    }
    

Google Firebase のサポートを追加する

  1. ファイルの最後に次のプラグインを追加します (まだそこにない場合)。

    apply plugin: 'com.google.gms.google-services'
    
  2. ツール バーの [Sync Now](今すぐ同期) を選択します。

コードの追加

  1. Azure Notification Hubs からのメッセージをインターセプトする NotificationHubListener オブジェクトを作成します。

    public class CustomNotificationListener implements NotificationListener {
    
       @override
       public void onNotificationReceived(Context context, RemoteMessage message) {
    
          /* The following notification properties are available. */
          Notification notification = message.getNotification();
          String title = notification.getTitle();
          String body = notification.getBody();
          Map<String, String> data = message.getData();
    
          if (message != null) {
             Log.d(TAG, "Message Notification Title: " + title);
             Log.d(TAG, "Message Notification Body: " + message);
          }
    
          if (data != null) {
              for (Map.Entry<String, String> entry : data.entrySet()) {
                  Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue());
              }
          }
       }
    }
    
  2. MainActivity クラスの OnCreate メソッドで、アクティビティの作成時に Notification Hubs の初期化プロセスを開始するために次のコードを追加します。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       NotificationHub.setListener(new CustomNotificationListener());
       NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String");
    
    }
    
  3. Android Studio のメニュー バーで、 [Build](ビルド)[Rebuild Project](プロジェクトのリビルド) の順に選択し、コードにエラーがないことを確認します。 ic_launcher アイコンに関するエラーが発生する場合は、AndroidManifest.xml ファイルから次のステートメントを削除します。

    android:icon="@mipmap/ic_launcher"
    
  4. アプリを実行するための仮想デバイスがあることを確認します。 ない場合は、次の手順に従って追加してください。

    1. デバイス マネージャー

    2. 仮想デバイス

    3. 選択したデバイスでアプリを実行し、そのアプリがハブに正常に登録されることを確認します。

      デバイスの登録

      Note

      インスタンス ID サービスの onTokenRefresh() メソッドが呼び出されるまでは、初期起動時に登録が失敗する場合があります。 更新すると、通知ハブに正常に登録されるようになります。

テスト通知を送信する

Azure portal から次の手順に従って、通知ハブにプッシュ通知を送信することができます。

  1. Azure portal 内のお使いのハブの [Notification Hub] ページで、 [トラブルシューティング] セクションの [テスト送信] を選択します。

  2. [プラットフォーム] として、 [Android] を選択します。

  3. [送信] を選択します。 Android デバイス上でモバイル アプリを実行していないため、まだそのデバイスに通知は表示されません。 モバイル アプリを実行したら、再度 [送信] ボタンを選択して通知メッセージを表示します。

  4. ポータル ページの一番下の一覧にある操作の結果を確認します。

    テスト通知の送信

  5. デバイスに通知メッセージが表示されます。

プッシュ通知は通常、互換性のあるライブラリを使用して Mobile Apps などのバックエンド サービスや ASP.NET に送信されます。 ライブラリがバックエンドに使用できない場合は、REST API を直接使用して通知メッセージを送信することもできます。

エミュレーターでモバイル アプリを実行する

エミュレーターの内部でプッシュ通知をテストする前に、エミュレーター イメージがアプリ用に選択した Google API レベルをサポートしていることを確認してください。 イメージでネイティブの Google API がサポートされていない場合、SERVICE_NOT_AVAILABLE 例外が発生することがあります。

また、 [設定]>[アカウント] で、実行中のエミュレーターに Google アカウントを追加したことを確認してください。 そうでない場合、FCM で登録しようとすると、AUTHENTICATION_FAILED 例外が発生する可能性があります。

次のステップ

このチュートリアルでは、Firebase Cloud Messaging を使用して、このサービスに登録されたすべての Android デバイスに通知をブロードキャストしました。 特定のデバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。

その他、通知の送信に関するチュートリアルの一覧を次に示します。