ホームページ >Java >&#&チュートリアル >Android プッシュ通知のステップバイステップガイド

Android プッシュ通知のステップバイステップガイド

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-18 08:46:021107ブラウズ

プッシュ通知は、モバイル アプリでのユーザー エンゲージメントと維持に重要な役割を果たし、ユーザーに最新の情報を提供し、購入につながる緊迫感を生み出します。また、Android では、アプリ サーバーとユーザーの Android デバイスの間の仲介者として機能する Firebase Cloud Messaging (FCM) 通知サービスの追加の利点も得られます。アプリがアクティブでないか、ユーザーがデバイスで別のアプリを使用している場合でも、プッシュ通知の配信に役立ちます。

Firebase Cloud Messaging (FCM) は、堅牢なクロスメッセージング システムにより、データ メッセージとアラートをユーザーに送信するために使用されます。 iOS、Web、Android プラットフォームはすべて FCM でサポートされています。最大 4kb のデータ ペイロードを持つメッセージは、FCM プッシュ通知を使用して送信できます。

この記事では、Android アプリへのプッシュ通知の統合を段階的に検討し、実装の重要な側面について説明します。また、ユーザー エンゲージメントを簡素化し、強化できるいくつかの製品とツールも紹介します。

Android プッシュ通知を理解する

モバイル プッシュ通知は、アプリケーションにおけるユーザー エンゲージメント、顧客維持、全体的なユーザー エクスペリエンスの向上に役立ちます。プッシュ通知を適切に使用すると、さまざまなビジネス ドメインにわたってモバイル アプリの有効性を大幅に高めることができます。

プッシュ通知は、Android アプリのさまざまなユースケースや目的に使用できます。

i) オンライン予約またはスケジュールのステータスについてユーザーを更新します。

ii) ユーザーが行ったオンライン注文についての説明と最新情報を提供します。

iii) バックエンドの変更についてユーザーに通知し、パッケージの追跡を支援します。

iv) アプリにリンクされたイベントに関する誇大広告を作成し、ユーザーに新しいオファー、プロモーション、機会を紹介します。

v) からかいメッセージでユーザーにアプリの新しい機能を試すよう促し、サーバーの更新やその他のバックエンドの変更を通知します。

Androidアプリケーションにおけるプッシュ通知の実装アプローチ

前提条件

Android アプリ FCM にプッシュ通知を正常に実装するには、次のツールとサービスが必要です。

i) Android Studio – これは Android 開発に使用される IDE です。

ii) 基本的な知識と理解 – Android プロジェクトの開発と構造、およびマニフェスト ファイルの構成についての基本的な理解が必要です。

iii) Firebase アカウント – プロジェクト設定を作成および管理するには、Firebase アカウントが必要です。

iv) インターネットの可用性 – 統合テストと Firebase のセットアップにはインターネット接続が必要です。

ステップ 1. Firebase プロジェクトをセットアップする

Firebase コンソールにアクセスします。

名前を付けてプロジェクトを作成し、「続行」をクリックします。

Android Push Notifications Step by Step Guide

さらに構成するには、Google Analytics サービスを有効または無効にして、アプリのデータ分析を取得できます。

セットアップを完了するには、プロジェクト設定を確認する必要があります。その後、プロジェクトを作成できます。

プロジェクトを作成した後、プッシュ通知を実装するために追加のプロジェクト構成を行う必要があります。

プロジェクトダッシュボードにアプリを登録する

Android アプリを追加するには、ダッシュボードの Android アイコンをクリックする必要があります。次に、Android パッケージ名を入力します。このパッケージ名は、プロジェクト内のパッケージ名 (つまり、com.app.demoapp) と同じである必要があります。

Android Push Notifications Step by Step Guide

アプリのニックネームを入力して、コンソールでアプリを識別することもできます。

アプリに SHA-1 キーを追加します。ターミナルで SHA-1 キーを生成するには、次のコマンドを使用する必要があります。次に、SHA-1 キーをコピーして、Firebase コンソールに貼り付けます。

./gradlew signingReport

最後に「アプリを登録」をクリックして設定を完了します。

Android Push Notifications Step by Step Guide

Google サービスのセットアップ

アプリの登録が完了したら、google-services.json ファイルをダウンロードしてコンピューターに保存できます。

次に、google-services.json を Android プロジェクトに追加し、ファイルを Android プロジェクトのアプリ ディレクトリに追加する必要があります。

MyApp/
├── app/
│ ├── src/
│ ├── build.gradle
│ ├── google-services.json
├── build.gradle
├── settings.gradle

Firebase SDKを追加する

次に、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 と同期できます。

ステップ 2. Android プロジェクトを構成する

プロジェクトレベルの build.gradle

プロジェクト レベルの 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 に変更を加える

プロジェクトのアプリ ディレクトリで build.gradle ファイルを見つけて見つけ、ファイルの最後に google-services プラグインを追加し、依存関係セクションに Firebase と Firebase Messaging の依存関係を追加します。

./gradlew signingReport

これらの手順が完了すると、プロジェクトはプッシュ通知用の Firebase Messaging を含む Firebase 依存関係で構成されます。次に、Firebase Messaging サービスの設定とアプリでの通知の処理に進みましょう。

ステップ 3. FCM を実装する

FCM メッセージを処理するサービスを追加する

FirebaseMessagingService を拡張する MyMessagingService という名前の新しいクラスを作成します。

アプリがフォアグラウンド状態にあるときに受信メッセージを処理するには、onMessageReceived メソッドをオーバーライドする必要があります。次に、通知を処理するロジックを実装し、必要に応じて通知をユーザーに表示します。

MyApp/
├── app/
│ ├── src/
│ ├── build.gradle
│ ├── google-services.json
├── build.gradle
├── settings.gradle

AndroidManifest.xml ファイルに登録する

プロジェクトで AndroidManifest.xml ファイルを開きます。

次に、FCM メッセージを処理するためにマニフェストに MyMessagingService を登録する必要があります。

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

ステップ 4: FCM 登録トークンを取得する

プッシュ通知を受信するには、アプリは 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 または任意のアクティビティまたはフラグメントで取得できます。このトークンは、ターゲットを絞ったプッシュ通知を特定のデバイスに送信するために重要です。

ステップ 5: プッシュ通知を送信する

サーバーから通知を送信したい場合は、FCM API に POST リクエストを行う必要があります。

サーバーキーを取得する必要があります

  • Firebase コンソール → プロジェクト設定 → 「プロジェクト概要」 → 「クラウド メッセージング」。
  • 「プロジェクト資格情報」にサーバー キーがあります。

cURL リクエスト: この cURL コマンドは、通知の送信に使用されます。 を置き換えます。実際のサーバーキーとを使用します。ターゲットデバイスの FCM トークンを使用します。

./gradlew signingReport

  • https://fcm.googleapis.com/fcm/send API エンドポイント。
  • H "Authorization: key=": これはサーバーキーを含む認証ヘッダーです。
  • H "Content-Type: application/json": コンテンツ タイプ ヘッダー。
  • d '{ ... }': これは、通知とデータを含む JSON ペイロードです。

高度なトピック

データメッセージの処理

データ メッセージは、カスタムのキーと値のペアを伝送できるメッセージのタイプであり、通知メッセージとは異なる方法で処理されます。データ メッセージは、アプリがフォアグラウンドかバックグラウンドかに関係なく、 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。