[Flutter/dart] local_notificationで通知画面にアイコンを表示する
概要
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のネイティブのリファレンスで見つけるという、、、
最新記事
すべて表示やりたいこと TextFieldで入力フォームを作りたい。 例えば入力内容が金額の場合、3桁区切りで頭に¥を付けた表記にしたい。 ただしユーザにこれらを入力させるのではなく、ユーザはあくまで数字を入力するだけで、アプリ側で自動でフォーマットしたい。 方法...
現象 やってること iosシミュレータで画像をデバイスのローカルに保存 保存したパスをデータベースに保存 アプリ立ち上げ時にデータベースから画像パスを取得し、そのパスの画像を画面上に表示 起きている現象 iosシミュレータを再起動した場合、上記3で「ファイルパスが見つからな...
やりたいこと 初期値さえ決まればあとは不変な変数がある ただし、コンストラクタ起動時にはまだ決定できない このような変数について late finalで変数を定義 (何らかのタイミングで)初期化されたかどうかをチェックし、されていなければ値を入れる(チェックしないとfina...
Comments