我正在尝试使用软件包flutter locale notifications
发送通知如果我立即使用.show()显示通知,则可以看到该通知,但是当我尝试使用.schedule()进行安排时,该通知不会出现。我可以看到它与await flutterLocalNotificationsPlugin.pendingNotificationRequests();一起计划。
我在一个新的flutter项目中尝试了相同的代码,并且确实可以在那儿工作,所以我必须在实际项目中做一些不同的事情,我只是不知道什么。
我的清单如下:
<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);
},
),
答案 0 :(得分:0)
我遇到了同样的问题,但是无法在线找到解决方案,但是后来我确实弄清楚了运行flutter clean
,然后flutter run
为我解决了问题。
您必须从本质上清理构建并重新构建。希望能奏效。
答案 1 :(得分:0)
如果您使用的是 iOS,则应将此行添加到 AppDelegate.m/AppDelegate.swift
中的 ios/Runner
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
}