ホームページ >Java >&#&チュートリアル >Android プッシュ通知のステップバイステップガイド
プッシュ通知は、モバイル アプリでのユーザー エンゲージメントと維持に重要な役割を果たし、ユーザーに最新の情報を提供し、購入につながる緊迫感を生み出します。また、Android では、アプリ サーバーとユーザーの Android デバイスの間の仲介者として機能する Firebase Cloud Messaging (FCM) 通知サービスの追加の利点も得られます。アプリがアクティブでないか、ユーザーがデバイスで別のアプリを使用している場合でも、プッシュ通知の配信に役立ちます。
Firebase Cloud Messaging (FCM) は、堅牢なクロスメッセージング システムにより、データ メッセージとアラートをユーザーに送信するために使用されます。 iOS、Web、Android プラットフォームはすべて FCM でサポートされています。最大 4kb のデータ ペイロードを持つメッセージは、FCM プッシュ通知を使用して送信できます。
この記事では、Android アプリへのプッシュ通知の統合を段階的に検討し、実装の重要な側面について説明します。また、ユーザー エンゲージメントを簡素化し、強化できるいくつかの製品とツールも紹介します。
モバイル プッシュ通知は、アプリケーションにおけるユーザー エンゲージメント、顧客維持、全体的なユーザー エクスペリエンスの向上に役立ちます。プッシュ通知を適切に使用すると、さまざまなビジネス ドメインにわたってモバイル アプリの有効性を大幅に高めることができます。
プッシュ通知は、Android アプリのさまざまなユースケースや目的に使用できます。
i) オンライン予約またはスケジュールのステータスについてユーザーを更新します。
ii) ユーザーが行ったオンライン注文についての説明と最新情報を提供します。
iii) バックエンドの変更についてユーザーに通知し、パッケージの追跡を支援します。
iv) アプリにリンクされたイベントに関する誇大広告を作成し、ユーザーに新しいオファー、プロモーション、機会を紹介します。
v) からかいメッセージでユーザーにアプリの新しい機能を試すよう促し、サーバーの更新やその他のバックエンドの変更を通知します。
Android アプリ FCM にプッシュ通知を正常に実装するには、次のツールとサービスが必要です。
i) Android Studio – これは Android 開発に使用される IDE です。
ii) 基本的な知識と理解 – Android プロジェクトの開発と構造、およびマニフェスト ファイルの構成についての基本的な理解が必要です。
iii) Firebase アカウント – プロジェクト設定を作成および管理するには、Firebase アカウントが必要です。
iv) インターネットの可用性 – 統合テストと Firebase のセットアップにはインターネット接続が必要です。
Firebase コンソールにアクセスします。
名前を付けてプロジェクトを作成し、「続行」をクリックします。
さらに構成するには、Google Analytics サービスを有効または無効にして、アプリのデータ分析を取得できます。
セットアップを完了するには、プロジェクト設定を確認する必要があります。その後、プロジェクトを作成できます。
プロジェクトを作成した後、プッシュ通知を実装するために追加のプロジェクト構成を行う必要があります。
Android アプリを追加するには、ダッシュボードの Android アイコンをクリックする必要があります。次に、Android パッケージ名を入力します。このパッケージ名は、プロジェクト内のパッケージ名 (つまり、com.app.demoapp) と同じである必要があります。
アプリのニックネームを入力して、コンソールでアプリを識別することもできます。
アプリに SHA-1 キーを追加します。ターミナルで SHA-1 キーを生成するには、次のコマンドを使用する必要があります。次に、SHA-1 キーをコピーして、Firebase コンソールに貼り付けます。
./gradlew signingReport
最後に「アプリを登録」をクリックして設定を完了します。
アプリの登録が完了したら、google-services.json ファイルをダウンロードしてコンピューターに保存できます。
次に、google-services.json を Android プロジェクトに追加し、ファイルを Android プロジェクトのアプリ ディレクトリに追加する必要があります。
MyApp/ ├── app/ │ ├── src/ │ ├── build.gradle │ ├── google-services.json ├── build.gradle ├── settings.gradle
次に、Firebase SDK をプロジェクトに追加し、build.gradle に Google サービスのクラスパスを追加します。
buildscript { repositories { google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } }
app/build.gradle に次の依存関係を追加します:-
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { // ... } dependencies { // Add these lines implementation platform('com.google.firebase:firebase-bom:29.0.4') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-messaging' }
これらの手順を完了したら、Android Studio で [今すぐ同期] をクリックしてプロジェクトを Firebase と同期できます。
プロジェクト レベルの build.gradle を開きます: Android プロジェクトのルート ディレクトリに移動し、build.gradle ファイルを見つけます。
google() および mavenCentral() リポジトリがリポジトリ セクションに含まれていることを確認してください。
buildscript { repositories { // Check that you have these lines google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } } allprojects { repositories { // Check that you have these lines google() mavenCentral() } }
プロジェクトのアプリ ディレクトリで build.gradle ファイルを見つけて見つけ、ファイルの最後に google-services プラグインを追加し、依存関係セクションに Firebase と Firebase Messaging の依存関係を追加します。
./gradlew signingReport
これらの手順が完了すると、プロジェクトはプッシュ通知用の Firebase Messaging を含む Firebase 依存関係で構成されます。次に、Firebase Messaging サービスの設定とアプリでの通知の処理に進みましょう。
FirebaseMessagingService を拡張する MyMessagingService という名前の新しいクラスを作成します。
アプリがフォアグラウンド状態にあるときに受信メッセージを処理するには、onMessageReceived メソッドをオーバーライドする必要があります。次に、通知を処理するロジックを実装し、必要に応じて通知をユーザーに表示します。
MyApp/ ├── app/ │ ├── src/ │ ├── build.gradle │ ├── google-services.json ├── build.gradle ├── settings.gradle
プロジェクトで AndroidManifest.xml ファイルを開きます。
次に、FCM メッセージを処理するためにマニフェストに MyMessagingService を登録する必要があります。
buildscript { repositories { google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } }
プッシュ通知を受信するには、アプリは FCM 登録トークンを取得する必要があります。このトークンは、デバイス上のアプリ インスタンスを一意に識別します。
FCM 登録トークンは、FirebaseMessagingService またはアプリ内のその他の適切な場所で取得できます。 FirebaseMessagingService でそれを行う方法を見てみましょう。
MyMessagingService を更新します:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { // ... } dependencies { // Add these lines implementation platform('com.google.firebase:firebase-bom:29.0.4') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-messaging' }
アクティビティまたはフラグメントでトークンを取得し、必要に応じて保存または使用できます。
buildscript { repositories { // Check that you have these lines google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } } allprojects { repositories { // Check that you have these lines google() mavenCentral() } }
これらのメソッドを使用すると、Android アプリで FCM 登録トークンを取得できます。トークンは、FirebaseMessagingService または任意のアクティビティまたはフラグメントで取得できます。このトークンは、ターゲットを絞ったプッシュ通知を特定のデバイスに送信するために重要です。
サーバーから通知を送信したい場合は、FCM API に POST リクエストを行う必要があります。
サーバーキーを取得する必要があります
cURL リクエスト: この cURL コマンドは、通知の送信に使用されます。
./gradlew signingReport
データ メッセージは、カスタムのキーと値のペアを伝送できるメッセージのタイプであり、通知メッセージとは異なる方法で処理されます。データ メッセージは、アプリがフォアグラウンドかバックグラウンドかに関係なく、 FirebaseMessagingService の onMessageReceived メソッドで受信されます。
MyMessagingService を更新します
MyApp/ ├── app/ │ ├── src/ │ ├── build.gradle │ ├── google-services.json ├── build.gradle ├── settings.gradle
Android 8.0 (API レベル 26) 以降では、すべての通知をチャネルに割り当てる必要があります。これにより、ユーザーは各チャネルの通知設定を制御できるようになります。
通知チャネルを設定するメソッドの作成:
buildscript { repositories { google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } }
MainActivity クラスまたはアプリケーション クラスでこのメソッドを呼び出します:
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { // ... } dependencies { // Add these lines implementation platform('com.google.firebase:firebase-bom:29.0.4') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-messaging' }
あるいは、NotificationUtils.createNotificationChannel(this); を呼び出すこともできます。 Application クラスがある場合は、次のようにします。
buildscript { repositories { // Check that you have these lines google() mavenCentral() } dependencies { // Add this line classpath 'com.google.gms:google-services:4.3.10' } } allprojects { repositories { // Check that you have these lines google() mavenCentral() } }
チャネル ID を使用するように通知ビルダーを更新します:
apply plugin: 'com.android.application' android { compileSdkVersion 33 defaultConfig { applicationId "com.example.myandroidapp" minSdkVersion 21 targetSdkVersion 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.legacy:legacy-support-v4:1.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // Add Firebase BOM implementation platform('com.google.firebase:firebase-bom:29.0.4') // Add Firebase Messaging dependency implementation 'com.google.firebase:firebase-messaging' } // Add this line at the bottom of the file apply plugin: 'com.google.gms.google-services'
プッシュ通知を実装する場合、正しく実装されていることを確認するためにテストを行う必要があります。
Android Studio では、logcat を開き、[表示] > をクリックします。ツールウィンドウ >ログキャット。
FirebaseMessagingService クラスで使用したタグを使用して、logcat 出力をフィルタリングすることもできます。アプリケーションはデバイス上またはエミュレータを通じて実行されている必要があります。
通知を受信すると、次のように logcat でデータを確認できます。
import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; import androidx.core.app.NotificationCompat; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; public class MyMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { // Handle the received message if (remoteMessage.getNotification() != null) { // Get the message body String messageBody = remoteMessage.getNotification().getBody(); // Send a notification sendNotification(messageBody); } } private void sendNotification(String messageBody) { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); String channelId = getString(R.string.default_notification_channel_id); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId) .setSmallIcon(R.drawable.ic_notification) .setContentTitle(getString(R.string.app_name)) .setContentText(messageBody) .setAutoCancel(true) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(channelId, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT); notificationManager.createNotificationChannel(channel); } notificationManager.notify(0, notificationBuilder.build()); } }
メッセージデータは次のように表示されます:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myandroidapp"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- Add this service --> <service android:name=".MyMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <!-- Other activities and services --> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
この記事では、プッシュ通知と実装への段階的なアプローチについて学びました。 Firebase コンソールでプロジェクトを設定する方法と、Firebase プロジェクト設定で必要な構成を完了する方法を学習しました。これにより、Android ユーザーへの Android 通知の送信を開始できるようになります。
まず、Firebase プロジェクトを設定し、google-services.json ファイルをダウンロードする必要があります。その後、このファイルをアプリのディレクトリに配置し、Firebase の依存関係を含めるように build.gradle ファイルを変更する必要があります。
次に、受信メッセージを処理するクラスを作成し、このサービス クラスを AndroidManifest.xml に登録する必要があります。マニフェスト ファイルにサービスを追加した後、アプリを一意に識別するために使用される FCM トークンを取得する必要があります。これにより、通知を対象のデバイスに送信できるようになります。
通知は、Firebase コンソールからメッセージを送信し、Android Studio の logcat を使用して配信を確認することでテストできます。サーバー側の通知を有効にするには、Firebase サーバー キーとデバイスの FCM トークンを含む cURL リクエストを使用します。
Android の新しいバージョンとの互換性を維持するには、「FirebaseMessagingService」でデータ メッセージを処理し、高度な構成の通知チャネルを管理する必要があります。
プッシュ通知は、関連する更新情報やカスタマイズされた情報を提供し、ユーザー維持率とコンバージョン率を向上させることができ、ユーザー エンゲージメントを促進するために非常に重要です。
詳細と詳細な手順については、Firebase と Android SDK の公式ドキュメントをお読みください。これらの Web サイトでは、アプリケーションにプッシュ通知を組み込むための徹底的なガイダンスと業界のベスト プラクティスが提供されています。
以上がAndroid プッシュ通知のステップバイステップガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。