huazi

huazi

Android学習シリーズ-通知Notification

今日は通知の基本的な使用方法について紹介する予定です。まず、公式ウェブサイトの紹介を見てみましょう。

通知は、アプリの通常の UI の外部にユーザーに表示されるメッセージです。通知をシステムに通知すると、通知エリアにアイコンとして表示されます。ユーザーはドロワー式通知バーを開いて通知の詳細情報を表示できます。通知エリアとドロワー式通知バーは、システムによって制御される領域であり、ユーザーはいつでも表示できます。

具体的な表示は以下の通りです:
図 1 通知エリアの通知。
図 2 ドロワー式通知バーの通知
紹介を読んだ後、皆さんは通知の使用シーンについて理解できると思います。現在、ほとんどのアプリにはプッシュ機能があり、プッシュは通知で表示されます。例えば、Jianshu は毎日ランダムなタイミングでプッシュを送ります。以下では、具体的な通知の使用方法を紹介します。

基本的な知識#

通知を作成するには、Notification クラスが必要です。NotificationCompat.Builder オブジェクトを使用して、通知に表示する UI 情報と操作を指定し、NotificationCompat.Builder.build () を呼び出すことで、具体的な仕様を含む Notification オブジェクトを取得できます。そして、NotificationManager.notify () を使用して、Notification オブジェクトをシステムに渡し、システムに後続の処理を行わせます。
Notification オブジェクトには、次の 3 つの要素が必要です:

  • 小さいアイコン、setSmallIcon () メソッドで設定
  • タイトル、setContentTitle メソッドで設定
  • 詳細テキスト、setContentText () で設定

つまり、これらの 3 つの要素は必須です。これらがない場合、Notification オブジェクトを作成しても送信することはできません。また、小さいアイコンについて説明する必要があります。小さいアイコンは、図 1 の通知エリアの小さいアイコンを指します。また、図 2 の通知の大きな画像の右下に表示される小さな画像です。これは特別な画像です。Android 公式は、すべてのアプリの通知バーのアイコンは、アルファレイヤーのみを使用して描画する必要があり、RGB レイヤーを含めるべきではないと要求しています。つまり、通知のアイコンには、透明度やグラデーションなどの追加の透明度を追加しないでください。通知のアイコンを他のアプリ(システムアプリなど)のアイコンと区別するために色を使用しないでください。アプリの通知アイコン(小さいアイコン)は、透明な背景に白いパターンがある必要があります。
また、具体的なデザインについては、マテリアルデザインの通知のデザインガイドラインを参照してください。アドレス:https://material.io/guidelines/patterns/notifications.html
以下に、各パラメータに対応する UI 表示をより明確にするための 2 つの画像を掲載します。
small_icon.png
通知の要素に対応する表示

上記の図の NotificationIcon は実際には smallIcon、Title は ContentTitle、Message は ContentText です。その他にもタイムスタンプなどがあります。通知のその他の設定はすべてオプションです。

通知の操作#

通知を設定した後、通知に対応する操作を追加する必要があります。もちろん、この操作を追加しないで通知を通知バーに表示することもできますが、ユーザーエクスペリエンスはあまり良くありません。ユーザーが通知をクリックすると、通知から直接対応するアクティビティに移動して次の操作を実行できます。通知内部では、操作自体は PendingIntent によって定義され、後者はアプリ内で Activity を起動するために使用されます。

通知の作成#

以下の手順で通知を作成できます。

  1. NotificationCompat.Builder を作成し、このビルダーを使用して通知に必要なコンテンツを設定して Notification を生成します。
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
Notification notification = builder
.setContentTitle("これは通知のタイトルです")
.setContentText("これは通知の内容です")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(
  getResources(), R.mipmap.ic_launcher))
.build();
  1. 優先度の設定
    通知には優先度もあります。setPriority () を使用して通知の優先度を指定できます。現在、通知の優先度には 5 つのレベルがあり、PRIORITY_MIN(-2)から PRIORITY_MAX(2)までの範囲があります。設定しない場合、優先度はデフォルトで PRIORITY_DEFAULT(0)になります。優先度が高いほど、通知バーの上に表示されます。

  2. クリック後のアクションの設定
    前述のように、pendingIntent を使用して通知のクリック後の操作を設定できます。たとえば、特定のアクティビティにジャンプすることができます。

Intent resultIntent = new Intent(this, ResultActivity.class);
PendingIntent resultPendingIntent = PendingIntent.getActivity(
            this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

この方法で、ユーザーが通知をクリックした後、ResultActivity ページに移動することができます。

  1. NotificationManager を使用して通知を送信する
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(mId, mBuilder.build());
  1. 通知の更新
    通知の内容を更新する必要がある場合は、上記で設定した通知の ID に基づいて通知を更新できます。通知の ID が同じであれば、更新することができます。具体的な操作は作成とほぼ同じです。公式のサンプルコードは以下の通りです:
mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
mNotifyBuilder = new NotificationCompat.Builder(this)
    .setContentTitle("New Message")
    .setContentText("You've received new messages.")
    .setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;
// Start of a loop that processes data and then notifies the user
...
    mNotifyBuilder.setContentText(currentText)
        .setNumber(++numMessages);
    // Because the ID remains unchanged, the existing notification is
    // updated.
    mNotificationManager.notify(
            notifyID,
            mNotifyBuilder.build());
  1. 通知の削除またはキャンセル
    通知を手動でキャンセルする必要がある場合は、NotificationManager の cancel () を呼び出すことができます。具体的な削除方法は以下のいくつかあります:
  • ユーザーが通知を個別にまたは「すべてクリア」でクリアした場合(通知がクリア可能な場合)。
  • ユーザーが通知をクリックし、通知の作成時に setAutoCancel () を呼び出した場合
  • 特定の通知 ID に対して cancel () を呼び出した場合。このメソッドは現在の通知も削除します。
  • cancelAll () メソッドを呼び出した場合、これにより以前に送信されたすべての通知が削除されます。

以上で、基本的な Notification を作成することができます。その他の通知の使用方法については後ほど書きます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。