简体   繁体   English

Flutter:计划通知不起作用

[英]Flutter: Schedule notification not working

I am developing a app using Flutter.我正在使用 Flutter 开发一个应用程序。

To show notification I an using flutter_local_notifications package.为了显示通知,我使用了flutter_local_notifications包。

I am getting notification, but schedule notification is not working.我收到通知,但日程通知不起作用。

Similar question was asked here How do I schedule a notification in Flutter?此处提出了类似的问题如何在 Flutter 中安排通知? , but my receiver is already inside the application tag. ,但我的接收器已经在application标签内。

Here is my manifest这是我的清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.folk.gayatrimonitor">

<!-- The INTERNET permission is required for development. Specifically,
     flutter needs it to communicate with the running application
     to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<!-- 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. -->
<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="gayatri_monitor"
    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"
        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>

adding this inside application of your manifest might solve your problem在清单的应用程序中添加此内容可能会解决您的问题

   <service          android:name="com.folk.localnotifications.services.LocalNotificationsService"
 android:exported="false" />

Remember: com.folk is used for this project only.请记住:com.folk 仅用于此项目。 For different project, go to your manifest, see package name and edit accordingly.对于不同的项目,请转到您的清单,查看包名称并进行相应的编辑。

I had the same problem but couldn't find the solution online, however, later I did figure out running flutter clean then flutter run seems to do the trick for me.我遇到了同样的问题,但在网上找不到解决方案,但是,后来我确实发现运行flutter clean然后flutter run似乎对我有用。

You have to essentially clean your build and rebuild it again.您必须从根本上清理您的构建并再次重建它。 Hope that helps.希望有帮助。

我遇到了同样的问题,我通过为我发出的每个 android 通知创建一个单独的通知通道来解决它,即使它们具有相同的优先级。

In my case, I just added the following inside initState()就我而言,我只是在initState()中添加了以下内容

var initializationSettingsAndroid =
        AndroidInitializationSettings('@mipmap/ic_launcher');
        var initializationSettingsIOS = IOSInitializationSettings();
        var initializationSettings = InitializationSettings(
            android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
        flutterLocalNotificationsPlugin.initialize(
          initializationSettings,
        );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM