Skip to content

Most visited

Recently visited

navigation

通知チャンネル

Android O では、ユーザーが通知を管理できるように、統合されたシステムを提供する通知チャンネルが導入されています。Android O を対象とする場合、通知をユーザーに表示するために、1 つ以上の通知チャンネルを実装する必要があります。Android O を対象としていない場合、アプリは Android O 端末上で実行されても Android 7.0 での動作と同じように動作します。

送信が必要なタイプごとに通知チャンネルを作成できます。アプリのユーザーによる選択内容を反映するために通知チャンネルを作成することもできます。たとえば、メッセージング アプリでユーザーが作成した会話グループごとに別々の通知チャンネルをセットアップできます。

ユーザーは、同じシステム UI を使用する通知に関連付けられている設定の大半を管理できるようになりました。通知チャンネルに投稿されたすべての通知は同じように動作します。ユーザーが次のいずれかの特性の動作を変更すると、それは通知チャンネルに適用されます。

ユーザーは [Settings] にアクセスするか、通知を長押しして動作を変更することができます。また、いつでも通知チャンネルをブロックすることもできます。通知チャンネルが作成され、通知マネージャーに送信されると、その通知チャンネルの動作をプログラムで変更することはできません。チャンネルの設定はユーザーが行います。

通知の優先度と重要度

Android O では、個々の通知の優先度を設定する機能が廃止されています。代わりに、通知チャンネルの作成時に推奨される重要度を設定できるようになりました。通知チャンネルに割り当てた重要度は、そのチャンネルに投稿するすべての通知メッセージに適用されます。IMPORTANCE_NONE(0) から IMPORTANCE_HIGH(4) までの範囲で、チャンネルがユーザーに割り込む度合いを設定する 5 つの重要度のいずれか 1 つでチャンネルを設定できます。デフォルトの重要度は 3 で、通知はあらゆる場所に表示され、マナーモードで鳴動しますが、ユーザーを視覚的に妨害するものではありません。作成された通知チャンネルの重要度を変更できるのはシステムだけです。

通知チャンネルを作成する

通知チャンネルを作成するには、次の手順を実行します。

  1. パッケージ内で固有の ID を持つ通知チャンネル オブジェクトを作成します。
  2. 警告音などの必要な初期設定を指定して通知チャンネル オブジェクトを設定します。
  3. 通知チャンネル オブジェクトを通知マネージャーに送信します。

通知チャンネルが既に存在しているときに新たに作成しようとしても、操作は実行されません。そのためアプリを開始するときに、上記の手順を実行しても問題ありません。次のコードサンプルでは、低い重要度とカスタム振動パターンを設定した通知を作成しています。

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
// The user visible name of the channel.
CharSequence name = getString(R.string.channel_name);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
// Configure the notification channel.
mChannel.enableLights(true);
// Sets the notification light color for notifications posted to this
// channel, if the device supports this feature.
mChannel.setLightColor(Color.RED);
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mNotificationManager.createNotificationChannel(mChannel);

NotificationManager.createNotificationChannels() を呼び出して、一回の操作で複数の通知チャンネルを作成することもできます。

通知チャンネル グループを作成する

複数のユーザー アカウントに対応しているアプリでは、アカウントごとに通知チャンネル グループを作成できます。通知チャンネル グループを使用すると、単独のアプリ内で名前が同じ複数の通知チャンネルを管理できます。たとえば、ソーシャル ネットワーク アプリは、ビジネス ユーザー アカウントだけでなく個人にも対応できます。このシナリオでは、個々のユーザー アカウントで、機能と名前が同じ複数の通知チャンネルが必要となることがあります。

この例でユーザー アカウントごとに関連付けられている通知チャンネルを専用グループにまとめると、ユーザーが [Settings] で通知チャンネルを容易に区別できるようになります。通知チャンネル グループごとに、ユーザーに見える名前だけでなく、パッケージ内で固有の ID が必要です。次のスニペットは、通知チャンネル グループを作成する方法を示しています。

// The id of the group.
String group = "my_group_01";
// The user visible name of the group.
CharSequence name = getString(R.string.group_name);;
NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.createNotificationChannelGroup(new NotificationChannelGroup(group, name));

新しいグループを作成すると、NotificationChannel.setGroup() を呼び出して、そのグループに新しいチャンネルを関連付けることができます。通知マネージャーにチャンネルを送信する前に、通知チャンネルとグループの関連付けのみを変更できます。

通知を作成する

通知を作成するには、仕様を含む Notification オブジェクトを返す Notification.Builder.build() を呼び出します。通知を発行するには、NotificationManager.notify() を呼び出して、この Notification オブジェクトをシステムに渡します。

必須通知コンテンツ

Notification オブジェクトの必須コンテンツは次のとおりです。

通知をチャンネルに投稿する

次のスニペットは、通知チャンネルへの単純な通知の投稿を示しています。コードは、通知チャンネルの ID を使用して、通知と通知チャンネルを関連付けることに注意してください。

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated.
int notifyID = 1;
// The id of the channel.
String CHANNEL_ID = "my_channel_01";
// Create a notification and set the notification channel.
Notification notification = new Notification.Builder(MainActivity.this)
        .setContentTitle("New Message")
        .setContentText("You've received new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setChannel(CHANNEL_ID)
        .build();
// Issue the notification.
mNotificationManager.notify(id, notification);

通知チャンネル設定を読み取る

ユーザーは、振動や警告音の動作などの通知チャンネル用設定を変更できます。次の 2 つのメソッドを呼び出して、ユーザーが通知チャンネルに適用している設定を検出できます。

通知チャンネル設定をアップデートする

通知チャンネルが作成されると、その設定と動作の変更はユーザーが行います。次のサンプルコードは、アクティビティを開始するインテントを作成して、通知チャンネル用設定にユーザーをリダイレクトする方法を示しています。この例では、インテントは通知チャンネルの ID やアプリのパッケージ名などの拡張データを必要とします。

Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_CHANNEL_ID, mChannel.getId());
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
startActivity(intent);

通知チャンネルを削除する

NotificationManager.deleteNotificationChannel() を呼び出して、通知チャンネルを削除することができます。削除されたチャンネルは、スパム防止メカニズムとして通知設定に引き続き表示されます。アプリを再インストールするか、アプリのコピーに関連付けられているデータをクリアして、開発用端末にあるテスト チャンネルをクリアできます。次のサンプルコードは、通知チャンネルの削除方法を示しています。

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
NotificationChannel mChannel = mNotificationManager.getNotificationChannel(id);
mNotificationManager.deleteNotificationChannel(mChannel);
This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.