【问题标题】:scheduled notifications not showing (Flutter_local_notifications)计划通知未显示 (Flutter_local_notifications)
【发布时间】:2019-09-06 14:02:28
【问题描述】:

我正在尝试使用 flutter locale notifications 包发送通知

如果我立即使用 .show() 显示通知,我可以看到通知,但是当我尝试使用 .schedule() 进行安排时,它不会出现。我可以看到它是用 await flutterLocalNotificationsPlugin.pendingNotificationRequests(); 安排的。

我在一个新的颤振项目中尝试了相同的代码,它确实在那里工作,所以我必须在我的实际项目中做一些不同的事情,我只是不知道是什么。

我的清单如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.bap_todo_flutter">

    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="bap_todo_flutter"
        android:icon="@mipmap/ic_launcher">
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            </intent-filter>
        </receiver>
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

我的状态是这样的:

FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      new FlutterLocalNotificationsPlugin();

  @override
  void initState() {
    super.initState();
    var initializationSettingsAndroid =
        new AndroidInitializationSettings('@mipmap/ic_launcher');
    var initializationSettingsIOS = new IOSInitializationSettings();
    var initializationSettings = new InitializationSettings(
        initializationSettingsAndroid, initializationSettingsIOS);
    flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);
   }

我正在使用一个简单的 RaisedButton 来安排通知:

RaisedButton(
  child: Text("notification"),
  onPressed: () async {
        var scheduledNotificationDateTime =
    new DateTime.now().add(new Duration(seconds: 2));
        var androidPlatformChannelSpecifics =
    new AndroidNotificationDetails('myalarmapplication.alarm',
       'Alarm Channel', 'Flutter Todo Alarm');
    var iOSPlatformChannelSpecifics =
       new IOSNotificationDetails();
    NotificationDetails platformChannelSpecifics =
       new NotificationDetails(androidPlatformChannelSpecifics,
          iOSPlatformChannelSpecifics);
    await flutterLocalNotificationsPlugin
      .schedule(
      1,
      'Alarm',
      'Alarm going off',
      scheduledNotificationDateTime,
      platformChannelSpecifics);
   },
),

【问题讨论】:

    标签: push-notification flutter


    【解决方案1】:

    我遇到了同样的问题,但在网上找不到解决方案,但是后来我发现运行flutter clean 然后flutter run 为我解决了问题。

    您必须从根本上清理您的构建并重新构建它。希望有效。

    【讨论】:

      【解决方案2】:

      如果您使用的是 iOS,则应将此行添加到 AppDelegate.m/AppDelegate.swift 中的 ios/Runner

      if #available(iOS 10.0, *) {
        UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
      }
      

      Got this solution from the documentation

      【讨论】:

        【解决方案3】:


        flutterLocalNotifications插件 .schedule(
        ...
        ...

        androidAllowWhileIdle: true);

        【讨论】:

          猜你喜欢
          • 2022-11-13
          • 1970-01-01
          • 2021-09-28
          • 1970-01-01
          • 2019-08-21
          • 1970-01-01
          • 2022-10-20
          • 2019-09-26
          相关资源
          最近更新 更多