嗨,我有一个用于 flutter 的 iOS 应用程序。我有一个计时器,计划每 30 秒运行一次以显示推送通知。当应用程序位于前台时,它可以正常工作。
当应用程序进入后台 (
AppLifecycleState.paused
) 时,推送通知将不再每 30 秒出现一次。进入后台后计时器是否停止运行?难道是我做错了?
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class _HomeState extends State<Home>{
Timer notiTimer;
@override
initState() {
super.initState();
startTimer();
}
@override
void dispose(){
notiTimer.cancel();
}
void startTimer(){
notiTimer = Timer.periodic(Duration(seconds: 30), (timer) {
showNotification()
});
}
Future<void> showNotification() async {
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'your channel id', 'your channel name', 'your channel description',
importance: Importance.Min, priority: Priority.Min, ticker: 'ticker');
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await _flutterLocalNotificationsPlugin.show(
0,
'Mobile App',
'Notification Appear',
platformChannelSpecifics,
payload: '');
}
}
对此没有直接的解决方案,我们需要通过播放无声音频来实现一个简单的技巧,这将使我们的应用程序在后台保持活动状态。此处添加说明:Medium Article.