Запланированные локальные уведомления не приходят в трепет - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть приложение, которое будет показывать уведомление в определенное время, скажем, каждый день в 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"
...