flutter - Flutter:应用程序终止时,flutter_local_notifications onSelectNotification 不起作用
问题描述
当应用程序处于前台或后台时,flutter_local_notifications 工作正常
但是当应用程序终止时
onSelectNotification 没有按预期工作,而是打开应用程序
static void initializeLocalNotification() async {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('ic_launcher');
final IOSInitializationSettings initializationSettingsIOS =
IOSInitializationSettings(
requestSoundPermission: false,
requestBadgePermission: false,
requestAlertPermission: false,
);
final InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: (String payload) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
var res = await prefs.setString(kNotificationPayLoad, payload);
// navigatorKey.currentState
// .push(MaterialPageRoute(builder: (_) => LoginScreen()));
// navigatorKey.currentState.pop();
});
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
IOSFlutterLocalNotificationsPlugin>()
?.requestPermissions(
alert: true,
badge: true,
sound: true,
);
}
解决方案
var details = await NotificationService()
.flutterLocalNotificationsPlugin
.getNotificationAppLaunchDetails();
if (details.didNotificationLaunchApp) {
print(details.payload);
}
在第一页使用此代码,它可以获得通知点击的有效负载
推荐阅读
- typoscript - TYPO3 10.4.x:获取实际语言 Uid 的打字稿
- animation - 在三元运算符中使用时 AnimatePresence 和 motion.div 不起作用
- c# - 为什么会出现这样的错误统一货币化
- sql - 如何检测 SQL 重复值
- awk - 当 awk $n 参数以 z 结尾时是什么意思?
- ruby-on-rails - Docker - 调用后端不起作用 - 即使 app/api 在同一个网络上
- c++ - 析构函数真的会破坏内存还是只是在对象的生命周期结束之前运行?
- python - 为什么我只有一种方式得到循环导入错误?
- python - 使用 anaconda 设置 vs-code 的集成终端
- android - 通过网络链接在 Android / iOS / Desktop 中创建联系人