リマインダーのように動作するフラッター付きのアプリケーションを作成しました。
アプリが閉じている場合でも、ユーザーに通知を表示するにはどうすればよいですか?
リマインダーについては Flutter Local Notifications Plugin を推奨します。強力なスケジューリングAPIを備えています。ローカル通知のドキュメントから:
通知が表示されるタイミングのスケジュール-定期的に通知を表示する(間隔ベース)-指定された時刻に毎日表示されるように通知をスケジュールする-指定された日時に毎週表示されるように通知をスケジュールする-ユーザーがタップしたときに処理する機能アプリがフォアグラウンド、バックグラウンド、またはterminatedの場合の通知
また、プッシュ通知の場合、 Firebase Cloud Messaging または one signal プラグインを使用するか、 platform-channels を使用してネイティブに実装できます
編集:アプリが終了した場合でも、特定の条件に従って通知を起動することもできます。これは、バックグラウンドでDartコードを実行することで達成できます。公式FAQからの引用:
FlutterアプリのバックグラウンドでDartコードを実行できますか?はい、iOSとAndroidの両方でバックグラウンドプロセスでDartコードを実行できます。詳細については、中記事を参照してください バックグラウンドでのFlutterプラグインとジオフェンシングによるDartの実行。
私もこの問題に直面したので、これらは私の学習です
私の場合:App-ResumeまたはApp-background状態で通知を受け取ることができますが、App-Close状態では通知を受け取りません。
この場合、通知本文は:でした
{notification: {body: null, title: null}, data: {body: hello, title: world}}
App-Closed状態で通知を受信するために、通知を
{notification: {body: abc, title: abc}, data: {url: string, body: string, title: string}}
スケジュールされた通知をフラッターで使用できます。
var scheduledNotificationDateTime =
new DateTime.now().add(new Duration(seconds: 5));
var androidPlatformChannelSpecifics =
new AndroidNotificationDetails('your other channel id',
'your other channel name', 'your other channel description');
var iOSPlatformChannelSpecifics =
new IOSNotificationDetails();
NotificationDetails platformChannelSpecifics = new
NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.schedule(
0,
'scheduled title',
'scheduled body',
scheduledNotificationDateTime,
platformChannelSpecifics);