質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

0回答

1798閲覧

Flutterのflutter_local_notificationsプラグインのローカル通知について

退会済みユーザー

退会済みユーザー

総合スコア0

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2021/07/13 15:08

flutterでflutter_local_notificationsプラグインを使用し、ローカル通知機能を作成しようとしています。
現状、以下のような実装を行い、毎日指定した時間に通知が出てくるところまで作成することができました。

しかし、指定した時間にAPIを叩いて、APIの取得結果を通知に載せたいと考えていますが、実現方法がわからずに困っています。

お助けいただければ幸いです。

対象の処理のソースコード

①initStateでnotificationの初期化

Dart

1void initState() { 2 super.initState(); 3 getSharedPreference(); 4 5 //notification start 6 var initializationSettingsAndroid = 7 AndroidInitializationSettings('app_icon'); 8 var initializationSettingsIOS = new IOSInitializationSettings( 9 onDidReceiveLocalNotification: onDidRecieveLocalNotification); 10 var initializationSettings = new InitializationSettings( 11 android: initializationSettingsAndroid, iOS: initializationSettingsIOS); 12 flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); 13 flutterLocalNotificationsPlugin!.initialize(initializationSettings); 14 15 //notification end 16 }

②通知のレイアウト、毎日スケジュール実行するための設定等
以下のbody2変数の値をAPIからの結果に書き換えて通知を送りたいと考えています。

しかし、毎日実行される通知処理は、flutterLocalNotificationsPlugin!.showDailyAtTime(・・・
だけが実行されているからか、これの外側にbody2の書き換え処理を用意しても変更がされませんでした。
どこの書くのが正しいか、どこに書くと書き換え後の通知が送れるかをお教えいただきたいです。

Dart

1Future onDidRecieveLocalNotification( 2 int id, String? title, String? body, String? payload) async { 3 await showDialog( 4 context: context, 5 builder: (BuildContext context) => CupertinoAlertDialog( 6 title: Text(title!), 7 content: Text(body!), 8 actions: [ 9 CupertinoDialogAction( 10 child: Text("ok"), 11 isDefaultAction: true, 12 onPressed: () async {}, 13 ) 14 ], 15 )); 16 } 17 18String body2 = "body2"; 19 20Future _showNotification() async { 21 _deleteSchedular(); 22 var time = new Time(hour, minutes, 0); 23 var androidPlatformChannelSpecifics = new AndroidNotificationDetails( 24 'your channel id', 'your channel name', 'your channel description', 25 importance: Importance.max, priority: Priority.high); 26 var iOSPlatformChannelSpecifics = new IOSNotificationDetails(); 27 var platformChannelSpecifics = new NotificationDetails( 28 android: androidPlatformChannelSpecifics, 29 iOS: iOSPlatformChannelSpecifics); 30 31 await flutterLocalNotificationsPlugin!.showDailyAtTime( 32 0, 33 'Timer', 34 body2, 35 time, 36 platformChannelSpecifics, 37 payload: 'Default_Sound', 38 ); 39 }

よろしくお願いしますλ。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問