我最近实现了 flutter_local_notifications 并且通知工作正常。但有一个问题是默认情况下通知不会显示为弹出窗口。默认情况下,该选项在通知设置中处于禁用状态。
我的代码是这样的:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
ServiceContainer.initialize(Injector());
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
await PreferenceHelper.create();
FirebaseMessaging messaging = FirebaseMessaging.instance;
await messaging.requestPermission(
alert: true,
badge: true,
sound: true,
provisional: false,
);
await FirebaseMessaging.instance.requestPermission();
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true,
badge: true,
sound: true,
);
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(statusBarColor: Colors.transparent));
runApp(const App());
await [Permission.storage, Permission.notification].request();
}
您需要请求通知权限
在 Android 13 或更高版本上请求权限
从 Android 13(API 级别 33)开始,应用程序现在能够显示提示,用户可以在其中决定是否要授予应用程序显示通知的权限。如需进一步了解此问题,请阅读https://developer.android.com/guide/topics/ui/notifiers/notification-permission。为了支持此应用程序,需要将其应用程序定位到 Android 13 或更高版本,并且编译 SDK 版本需要至少为 33 (Android 13)。例如,要面向 Android 13,请更新应用程序的 build.gradle 文件,将 targetSdkVersion 设为 33。然后,应用程序可以调用以下代码来请求权限,其中 requestPermission 方法与 AndroidFlutterLocalNotificationsPlugin 类(即 AndroidFlutterLocalNotificationsPlugin 类的 Android 实现)相关联。插件)
这就是你要做的。
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()?.
requestNotificationsPermission();