使用按钮生成通知时,通知显示完整且没有问题,但是当我使用 Workmanager 安排任务来显示相同的通知时,它会生成,但只显示标题,而不显示其余内容,这是从另一个类获得的数据类型字符串。该应用程序仅适用于Android。
这是用于flutter本地通知的代码:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
var variableString = "Notificación de prueba";
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
Future<void> initNotifications() async {
const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher');
const DarwinInitializationSettings initializationSettingsIOS = DarwinInitializationSettings();
const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
Future<void> showNotificacion() async {
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails(
'1', 'My App Name',
playSound: true,
importance: Importance.max,
priority: Priority.max,
showWhen: true,
showProgress: true,
enableVibration: true,
ongoing: true,
styleInformation: BigTextStyleInformation(''),
);
const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
await flutterLocalNotificationsPlugin.show(
1, 'My App Name', variableString, notificationDetails);
}
这是App的初始化代码:
@pragma('vm:entry-point')
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) {
showNotificacion(); // Envía una notificación cada 45 minutos
return Future.value(true);
});
}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await initNotifications(); // Local Notifications
await Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
await Workmanager().registerPeriodicTask(
"1", "simplePeriodicTask", frequency: Duration(minutes: 45),);
runApp(
const MyApp(),
);
}
我尝试以不同的方式获取所述变量的值(使用sharedPreferences将其存储在存储中,使用全局变量等...),但我无法通过workmanager获取要通过flutter本地通知显示的信息.
非常感谢您抽出时间!!
你必须在 showNotificacion 函数中声明变量(variableString)。
因为执行任务时u只调用showNotificacion()函数所以应用程序看不到你的varvariableString =“Notificacióndeprueba”;变量
示例代码:
Future<void> showNotificacion() async {
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails(
'1', 'My App Name',
playSound: true,
importance: Importance.max,
priority: Priority.max,
showWhen: true,
showProgress: true,
enableVibration: true,
ongoing: true,
styleInformation: BigTextStyleInformation(''),
);
const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
String? variableString = // ur variableString
await flutterLocalNotificationsPlugin.show(
1, 'My App Name', variableString, notificationDetails);
}