Android Oの通知チャンネルを使ってみる
Android Oの通知チャンネルを使ってみる
通知チャンネルとは
Android O では、ユーザーが通知を管理できるように、統合されたシステムを提供する通知チャンネルが導入されています。Android O を対象とする場合、通知をユーザーに表示するために、1 つ以上の通知チャンネルを実装する必要があります。Android O を対象としていない場合、アプリは Android O 端末上で実行されても Android 7.0 での動作と同じように動作します。 Android Oに対応したアプリでは必ず通知チャンネルを実装する必要がある
通知チャンネルの作成
通知を表示するためのチャンネルを作成します 通知を作成するときは、チャンネルID、通知名、inportanceを設定します。
private static final String CHANNEL_ID = "sample_notification_channel";; @TargetApi(Build.VERSION_CODES.O) private void createChannelIfNeeded() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); CharSequence name = "SampleNotificationName"; int importance = NotificationManager.IMPORTANCE_HIGH; NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance); mChannel.enableLights(true); mChannel.setLightColor(Color.RED); mChannel.enableVibration(true); mNotificationManager.createNotificationChannel(mChannel); } }
通知チャンネルに設定した内容はアプリの設定画面から閲覧、変更が可能です。 以下のコードで設定画面を開きます。
private void showNotificationChannelSetting() { Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, CHANNEL_ID); startActivity(intent); }
通知の表示
チャンネルの準備が整ったので通知を表示してみます。 通知を作成する際に通知チャンネルのIDを設定します。
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID) .setSmallIcon(R.drawable.ic_adb_white_24dp) .setContentTitle("My notification") .setContentText("Hello World!"); NotificationManagerCompat manager = NotificationManagerCompat.from(this); manager.notify(ID, mBuilder.build());
通知の表示ができました。
また、デフォルトでランチャーのアイコンにバッジが表示されます。
まとめ
- 優先度・音・バイブレーションの設定はチャンネルに対して行う
- Notificationに対してチャンネルIDを設定することでどのチャンネルで表示するかを決定する
- ユーザーはチャンネル毎に細かく表示設定を変更可能