У меня есть приложение, которое будет показывать уведомление в определенное время, скажем, каждый день в 10 утра. Я использовал flutter_local_notifications: ^1.4.1
для уведомлений. Со страницы GitHub я создал уведомление и получил уведомление в режиме реального времени. Когда я активировал кнопку для запланированного уведомления, скажем, через 10 секунд, я не получил ответ. Пробовал в эмуляторе в android.
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
void main() => runApp(AwesomeTime());
class AwesomeTime extends StatefulWidget {
@override
_AwesomeTimeState createState() => _AwesomeTimeState();
}
class _AwesomeTimeState extends State<AwesomeTime> {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;
void initState() {
super.initState();
initNotification();
}
initNotification() {
flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
var initializationSettingsIOS = new IOSInitializationSettings();
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
FlutterLocalNotificationsPlugin().initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}
Future<void> onSelectNotification(String payload) async {
if (payload != null) {
debugPrint('notification payload: ' + payload);
}
}
showNotification() async {
var scheduledNotificationDateTime =
DateTime.now().add(Duration(seconds: 5));
var android = new AndroidNotificationDetails(
'Channel ID',
'Channel Name',
'channelDescription',
importance: Importance.Max,
priority: Priority.High,
);
var iOS = new IOSNotificationDetails();
var platform = new NotificationDetails(android, iOS);
// await flutterLocalNotificationsPlugin.show(
// 0, 'current reminder', 'current reminder', platform,
// payload: 'Awesome');
await flutterLocalNotificationsPlugin.schedule(0, 'Schedule Reminder',
'Schedule reminder', scheduledNotificationDateTime, platform);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: RaisedButton(
child: Text('push notifications'),
onPressed: () {
showNotification();
},
),
),
),
);
}
}
В do c они упомянули некоторые обновления, которые необходимо сделать для AndroidManifest.xml
Я обновил в android/app/src/main/AndroidManifest.xml
Ниже приведены изменения
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<receiver android:name="com.example.first_app.ScheduledNotificationReceiver" />
<receiver android:name="com.example.first_app.ScheduledNotificationBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<service android:name="com.example.first_app.localnotifications.services.LocalNotificationsService"