このチュートリアルでは、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 無料試用版に関するページを参照してください。
注
Google/Firebase API は、Azure China リージョンではサポートされていません。
次のものも必要です。
- Android Studio の最新バージョンをお勧めします。
- 最小サポートは API レベル 19 です。
Android Studio プロジェクトを作成する
最初の手順は、Android Studio でプロジェクトを作成することです。
Android Studio を起動します。
[ ファイル]、[ 新規]、[ 新しいプロジェクト] の順に選択します。
[Choose your project](プロジェクトの選択) ページで、 [Empty Activity](空のアクティビティ) を選択してから、 [Next](次へ) を選択します。
[ プロジェクトの構成] ページで、次の操作を行います。
- アプリケーションの名前を入力します。
- プロジェクト ファイルを保存する場所を指定します。
- 完了 を選択します。
FCM をサポートする Firebase プロジェクトを作成する
Firebase コンソールにサインインします。 Firebase プロジェクトがまだない場合は、新しく作成します。
プロジェクトを作成した後、 [Add Firebase to your Android app](Android アプリに Firebase を追加する) を選択します。
Android アプリへの Firebase の追加ページで、次の操作を行います。
Android パッケージ名の場合は、アプリケーションの build.gradle ファイル内の applicationId の値をコピーします。 この例では、
com.fabrikam.fcmtutorial1app
です。[アプリの登録] を選択します。
[google-services.json をダウンロード] を選択し、プロジェクトの app フォルダーにファイルを保存して、[次へ] をクリックします。
Firebase コンソールで、プロジェクトの歯車アイコンを選択します。 次に、 [Project Settings](プロジェクト設定) を選択します。
google-services.json ファイルを Android Studio プロジェクトのアプリ フォルダーにダウンロードしていない場合は、このページでダウンロードできます。
[ クラウド メッセージング ] タブに切り替えます。
後で使用するために、サーバー キーをコピーし、保存します。 この値を使用して、ハブを構成します。
Firebase Cloud Messaging タブにサーバー キーが表示されない場合は、次の手順に従います。
- Cloud Messaging API (レガシ) の [無効] 見出しの 3 つのドット メニューを選択します。
- リンクに従って 、Google Cloud Console で API を管理します。
- Google Cloud コンソールで、ボタンを選択して Google Cloud Messaging API を有効にします。
- 数分待ちます。
- Firebase コンソール プロジェクトの [クラウド メッセージング ] タブに戻り、ページを更新します。
- Cloud Messaging API ヘッダーが Cloud Messaging API (Legacy) Enabled に変更され、サーバー キーが表示されていることを確認します。
通知ハブを構成する
Azure portal にサインインします。
左側のメニューで [すべてのサービス] を選択し、 [モバイル] セクションの [Notification Hubs] を選択します。 サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。 Notification Hubs を [お気に入り] に追加した後、左側のメニューで選択します。
[Notification Hubs] ページで、ツール バーの [追加] を選択します。
[ Notification Hubs ] ページで、次の操作を行います。
[通知ハブ] に名前を入力します。
[新しい名前空間の作成] に名前を入力します。 名前空間には、1 つ以上のハブが含まれています。
[場所] ボックスの一覧から値を選択します。 この値には、ハブを作成する場所を指定します。
リソース グループで既存のリソース グループを選択するか、新しい リソース グループを作成します。
を選択してを作成します。
[通知] (ベルのアイコン) を選択し、 [リソースに移動] を選択します。 [Notification Hubs] ページの一覧を最新の情報に更新して、お使いの通知ハブを選択することもできます。
リストから [アクセス ポリシー] を選択します。 2 つの接続文字列を使用できます。 これらは、後でプッシュ通知を処理するために必要になります。
重要
アプリケーションで DefaultFullSharedAccessSignature ポリシーを使用しないでください。 このポリシーは、アプリバックエンドでのみ使用されます。
Firebase Cloud Messaging の設定をハブ用に構成する
左側のウィンドウの [Settings](設定) で、 [Google (GCM/FCM)] を選択します。
前に保存した FCM プロジェクトのサーバー キーを入力します。
ツール バーで、保存を選択します。
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()); } } } }
OnCreate
クラスのMainActivity
メソッドで、アクティビティの作成時に 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 のメニュー バーで [ ビルド] を選択し、[ プロジェクトのリビルド ] を選択して、コードにエラーがないことを確認します。 ic_launcher アイコンに関するエラーが発生した場合は、AndroidManifest.xml ファイルから次のステートメントを削除します。
android:icon="@mipmap/ic_launcher"
アプリを実行するための仮想デバイスがあることを確認します。 ない場合は、次の手順に従って追加してください。
選択したデバイスでアプリを実行し、ハブに正常に登録されていることを確認します。
注
インスタンス ID サービスの
onTokenRefresh()
メソッドが呼び出されるまで、初回起動時に登録が失敗する可能性があります。 更新により、通知ハブへの正常な登録が開始されます。
テスト通知を送信する
次のように、 Azure portal からプッシュ通知を通知ハブに送信できます。
Azure portal のハブの通知ハブ ページで、[トラブルシューティング] セクションで [テスト送信] を選択します。
[プラットフォーム] で、[Android] を選択します。
[Send] を選択します。 Android デバイス上でモバイル アプリを実行していないため、まだそのデバイスに通知は表示されません。 モバイル アプリを実行したら、再度 [送信] ボタンを選択して通知メッセージを表示します。
ポータル ページの下部にある一覧で操作の結果を確認します。
デバイスに通知メッセージが表示されます。
プッシュ通知は、通常、モバイル アプリや互換性のあるライブラリを使用した 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 でテストされています。