Android O(API 26)バージョンから導入された通知チャネルです。次のリンクからそれについて読みました:
質問:
通知の数が複数ある場合、アプリケーションの起動時に通知チャネルを作成し、それをApplicationScope
に維持することは良い考えですか?
_public void addNotificationChannels(Context context) {
List<NotificationChannel> channels = new ArrayList<>();
channels.add("channel_1");
channels.add("channel_2");
.
.
channels.add("channel_7");
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannels(channels);
}
_
通知マネージャーにチャネルを追加する前にこの行を実行しようとするとどうなりますかnew Notification.Builder(getApplicationContext(), PRIMARY_CHANNEL)
私がやっていることは アプリケーションクラス (アプリのマニフェストをクラス名で更新することを忘れないでください)を拡張し、onCreateメソッド。これにより、通知の作成時に通知チャネルが常に作成されることが保証されます。
私見では、通知ごとに通知チャネルを何度も作成する(試行する)ことは、CPUサイクルの無駄です。
余談ですが、私は常にこの方法でもアプリのバージョンをログに記録します。これは、誰かがlogcatを送信するときに非常に役立ちます。
createNotificationChannel
を呼び出しても安全です。再作成されません。私は2つの賢明な方法があると思います:
1。 Applicationサブクラスですべてのチャネルを作成し、
2。メインのアクティビティですべてのチャネルを作成します。これは最初にアプリから始まります。
A)ドキュメントのとおり:
元の値で既存の通知チャネルを作成しても何も実行されないため、アプリを起動するときにこのコードを呼び出しても安全です。
したがって、通知自体を作成すると同時に通知チャネルを安全に作成できます。チャネルがすでに作成されているかどうかを確認する必要はありません。
B)アプリケーション内または任意のアクティビティ/フラグメント。
注:未加工のFCMを使用している場合、プッシュペイロードパラメータAndroid_channel_id
、アプリですでに作成されている特定のチャネルにそのプッシュを関連付けることができます。
FCMペイロード: https://firebase.google.com/docs/cloud-messaging/http-server-ref