チュートリアル: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 アプリケーションを作成します。
重要
2024 年 6 月の時点で、FCM レガシ API はサポートされなくなり、廃止される予定です。 プッシュ通知サービスの中断を回避するには、できるだけ早く FCM v1 プロトコルに移行する必要があります。
このチュートリアルの完成したコードは、GitHub からダウンロードできます。
このチュートリアルに含まれる手順は次のとおりです。
- Android Studio プロジェクトを作成します。
- Firebase Cloud Messaging をサポートする Firebase プロジェクトを作成します。
- 通知ハブを作成します。
- そのハブにアプリを接続します。
- アプリをテストします。
前提条件
このチュートリアルを完了するには、アクティブな Azure アカウントが必要です。 アカウントがない場合は、無料試用アカウントを数分で作成することができます。 詳細については、「Azure の無料試用版サイト」を参照してください。
Note
Google/Firebase API は Azure China リージョンではサポートされていません。
次のものも必要です。
- Android Studio の最新バージョンをお勧めします。
- サポートされる API レベルは 19 以上です。
Android Studio プロジェクトの作成
まず、Android Studio でプロジェクトを作成します。
Android Studio を起動します。
[File](ファイル) を選択し、 [New](新規) を選択して、 [New Project](新しいプロジェクト) を選択します。
[Choose your project](プロジェクトの選択) ページで、 [Empty Activity](空のアクティビティ) を選択してから、 [Next](次へ) を選択します。
[Configure your project](プロジェクトの構成) ページで、次の手順を実行します。
- アプリケーションの名前を入力します。
- プロジェクト ファイルを保存する場所を指定します。
- [完了] を選択します。
FCM をサポートする Firebase プロジェクトを作成する
Firebase コンソールにサインインします。 Firebase プロジェクトがまだない場合は、新しく作成します。
プロジェクトを作成した後、 [Add Firebase to your Android app](Android アプリに Firebase を追加する) を選択します。
[Android アプリへの Firebase の追加] ページで、次の手順を実行します。
[Android package name](Android パッケージ名) については、お使いのアプリケーションの build.gradle ファイル内にある applicationId の値をコピーします。 この例では
com.fabrikam.fcmtutorial1app
です。[アプリの登録] を選択します。
[google-services.json をダウンロード] を選択し、プロジェクトの app フォルダーにファイルを保存して、[次へ] をクリックします。
Firebase コンソールで、プロジェクトの歯車アイコンを選択します。 次に、 [Project Settings](プロジェクト設定) を選択します。
google-services.json ファイルを Android Studio プロジェクトの app フォルダーにダウンロードしていない場合は、このページでダウンロードできます。
[クラウド メッセージング] タブに切り替えます。
後で使用するために、サーバー キーをコピーし、保存します。 この値を使用して、ハブを構成します。
[Firebase Cloud Messaging] タブに [サーバー キー] が表示されない場合、次の手順を行います。
- [Cloud Messaging API (Legacy) Disabled](Cloud Messaging API (レガシ) 無効) という見出しの 3 つのドット メニューを選択します。
- Manage API in Google Cloud Console (Google Cloud Console で API を管理する) リンクに従います。
- Google Cloud Console で、Google Cloud Messaging API を有効にするボタンを選択します。
- 数分待ちます。
- Firebase コンソール プロジェクトの [Cloud Messaging] タブに戻り、ページを最新の情報に更新します。
- Cloud Messaging API の見出しが [Cloud Messaging API (Legacy) Enabled](Cloud Messaging API (レガシ) 有効) に変わり、現在サーバー キーが表示されていることを確認します。
通知ハブを構成する
Azure portal にサインインします。
左側のメニューで [すべてのサービス] を選択し、 [モバイル] セクションの [Notification Hubs] を選択します。 サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。 Notification Hubs を [お気に入り] に追加した後、左側のメニューでそれを選択します。
[Notification Hubs] ページで、ツール バーの [追加] を選択します。
[Notification Hub] ページで、次の手順を実行します。
[通知ハブ] に名前を入力します。
[新しい名前空間の作成] に名前を入力します。 名前空間には、少なくとも 1 つのハブが存在します。
[場所] ボックスの一覧から値を選択します。 この値には、ハブを作成する場所を指定します。
[リソース グループ] で既存のリソース グループを選択するか、新しいリソース グループを作成します。
[作成] を選択します。
[通知] (ベルのアイコン) を選択し、 [リソースに移動] を選択します。 [Notification Hubs] ページの一覧を最新の情報に更新して、お使いの通知ハブを選択することもできます。
リストから [アクセス ポリシー] を選択します。 使用可能な接続文字列が 2 つあることに注意してください。 これらは、後でプッシュ通知を処理するために必要になります。
重要
アプリケーションで DefaultFullSharedAccessSignature ポリシーを使用しないでください。 このポリシーは、アプリのバックエンドでのみ使用されます。
Firebase Cloud Messaging の設定をハブ用に構成する
左側のウィンドウの [Settings](設定) で、 [Google (GCM/FCM)] を選択します。
前に保存した FCM プロジェクトのサーバー キーを入力します。
ツールバーで、 [Save](保存) をクリックします。
Azure portal に、ハブが正常に更新されたことを示すメッセージが表示されます。 [Save](保存) ボタンが無効になります。
これで、Firebase Cloud Messaging と連携するように通知ハブが構成されました。 また、デバイスに通知を送信したり、通知を受信するアプリを登録したりするために必要な接続文字列も取得されました。
通知ハブにアプリケーションを接続する
プロジェクトへの Google Play Services の追加
Android Studio で、メニューから [ツール] を選択し、 [SDK Manager] を選択します。
自分のプロジェクトで使用される Android SDK のターゲット バージョンを選択します。 次に、 [パッケージの詳細ページの表示] を選択します。
まだインストールされていない場合は、 [Google API] を選択します。
[SDK Tools](SDK ツール) タブに切り替えます。Google Play 開発者サービスをまだインストールしていない場合は、次の図に示すように [Google Play 開発者サービス] を選択します。 次に、 [適用] をクリックしてインストールします。 SDK のパスは後の手順で使用するので、メモしておいてください。
[Confirm Change](変更の確認) ダイアログ ボックスが表示される場合は、 [OK] を選択します。 コンポーネント インストーラーによって、要求したコンポーネントがインストールされます。 コンポーネントがインストールされた後、 [Finish](完了) を選択します。
[OK] を選択して、 [Settings for New Projects](新しいプロジェクトの設定) ダイアログ ボックスを閉じます。
Azure Notification Hubs ライブラリの追加
アプリの 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'
dependencies セクションの後に次のリポジトリを追加します。
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://example.io' } } }
Google Firebase のサポートを追加する
ファイルの最後に次のプラグインを追加します (まだそこにない場合)。
apply plugin: 'com.google.gms.google-services'
ツール バーの [Sync Now](今すぐ同期) を選択します。
コードの追加
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()); } } } }
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"); }
Android Studio のメニュー バーで、 [Build](ビルド) 、 [Rebuild Project](プロジェクトのリビルド) の順に選択し、コードにエラーがないことを確認します。 ic_launcher アイコンに関するエラーが発生する場合は、AndroidManifest.xml ファイルから次のステートメントを削除します。
android:icon="@mipmap/ic_launcher"
アプリを実行するための仮想デバイスがあることを確認します。 ない場合は、次の手順に従って追加してください。
選択したデバイスでアプリを実行し、そのアプリがハブに正常に登録されることを確認します。
Note
インスタンス ID サービスの
onTokenRefresh()
メソッドが呼び出されるまでは、初期起動時に登録が失敗する場合があります。 更新すると、通知ハブに正常に登録されるようになります。
テスト通知を送信する
Azure portal から次の手順に従って、通知ハブにプッシュ通知を送信することができます。
Azure portal 内のお使いのハブの [Notification Hub] ページで、 [トラブルシューティング] セクションの [テスト送信] を選択します。
[プラットフォーム] として、 [Android] を選択します。
[送信] を選択します。 Android デバイス上でモバイル アプリを実行していないため、まだそのデバイスに通知は表示されません。 モバイル アプリを実行したら、再度 [送信] ボタンを選択して通知メッセージを表示します。
ポータル ページの一番下の一覧にある操作の結果を確認します。
デバイスに通知メッセージが表示されます。
プッシュ通知は通常、互換性のあるライブラリを使用して Mobile Apps などのバックエンド サービスや ASP.NET に送信されます。 ライブラリがバックエンドに使用できない場合は、REST API を直接使用して通知メッセージを送信することもできます。
エミュレーターでモバイル アプリを実行する
エミュレーターの内部でプッシュ通知をテストする前に、エミュレーター イメージがアプリ用に選択した Google API レベルをサポートしていることを確認してください。 イメージでネイティブの Google API がサポートされていない場合、SERVICE_NOT_AVAILABLE 例外が発生することがあります。
また、 [設定]>[アカウント] で、実行中のエミュレーターに Google アカウントを追加したことを確認してください。 そうでない場合、FCM で登録しようとすると、AUTHENTICATION_FAILED 例外が発生する可能性があります。
次のステップ
このチュートリアルでは、Firebase Cloud Messaging を使用して、このサービスに登録されたすべての Android デバイスに通知をブロードキャストしました。 特定のデバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。
その他、通知の送信に関するチュートリアルの一覧を次に示します。
Azure Mobile Apps:Notification Hubs に統合されている Mobile Apps バックエンドから通知を送信する方法の例については、「iOS アプリへのプッシュ通知の追加」を参照してください。
Azure Notification Hub Java SDK: Java からの通知を送信するには「 Java から Notification Hubs を使用する方法 」を参照してください。 これは Android の開発用に Eclipse でテストされています。