[Flutter/dart] local_notificationで通知画面にアイコンを表示する
- M.R

- 2020年12月24日
- 読了時間: 2分
概要
local_notificationというライブラリを使うと通知を作成することができます。公式のサンプルではタイトルと本文しかありませんが、ラインみたいにアイコンをつけることもできます。今回は通知画面にアイコンを表示する方法を紹介します。
方法
androidの場合
AndroidNotificationDetails()のlargeIcon:プロパティを設定します。
var styleInformation=DefaultStyleInformation(true, true);
var androidChannelSpecifics = AndroidNotificationDetails(
"channel_id",
"channel_name",
"channel_description",
importance: Importance.max,
priority: Priority.high,
largeIcon: FilePathAndroidBitmap(icon_path), //ここ!
styleInformation: styleInformation,
);僕の場合はローカルにアイコン画像が保存してあるので、FilePathAndroidBitmap()の引数に画像のパス(icon_path)を渡しています。drawable resourceにある画像を使いたい場合はDrawableResourceAndroidBitmap()を使えばいけそうです(ドキュメントを読んだ限り、です。試していません)。
iosの場合
以下のようにします。icon_pathがアイコン画像のパスです。
var iosChannelSpecifics =IOSNotificationDetails(
attachments: [IOSNotificationAttachment(icon_path)]
);注意しなければいけないのは、icon_pathに置いてある画像は通知を作成後にシステムにより移動させられてしまいます。通知の作成以外の場所でicon_pathを参照している場合は、ファイルをコピーし、そのパスを渡すようにしましょう。
Once validated, attached files are moved into the attachment data store so that they can be accessed by all of the appropriate processes.
最後に、上記で作成したandroidChannelSpecificとisoChannelSpecificを引数としてplatformChannelSpecificを作成します。
var platformChannelSpecifics =
NotificationDetails(
android: androidChannelSpecifics,
iOS: iosChannelSpecifics
);通知画面は以下のようになります。(iosです)

最後に
ラインみたいにアイコンをタイトルの前に持ってくるのはできないみたいですね(もしできるのならば教えてください!)。
iosで画像ファイルが移動されてしまうのがトラップでした。flutterでググっても全然情報が出てこず、最終的にiosのネイティブのリファレンスで見つけるという、、、






コメント