我有一个正在检查的API,并且当响应更改时,我需要向用户发送通知。我想知道如何在没有FCM推送通知的情况下执行此操作。
我正在使用flutter-local-notifications
和后台提取(https://github.com/transistorsoft/flutter_background_fetch)来完成此操作。在后台获取文档中,它说后台获取每15分钟执行一次功能,对我来说足够了。
这是我的initPlatformState()
:
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
// Load persisted fetch events from SharedPreferences
SharedPreferences prefs = await SharedPreferences.getInstance();
String json = prefs.getString(EVENTS_KEY);
if (json != null) {
setState(() {
_events = jsonDecode(json).cast<String>();
});
}
// Configure BackgroundFetch.
BackgroundFetch.configure(BackgroundFetchConfig(
minimumFetchInterval: 15,
stopOnTerminate: false,
enableHeadless: true,
forceReload: true,
startOnBoot: true,
), _onBackgroundFetch).then((int status) {
print('[BackgroundFetch] SUCCESS: $status');
setState(() {
_status = status;
});
}).catchError((e) {
print('[BackgroundFetch] ERROR: $e');
setState(() {
_status = e;
});
});
// Optionally query the current BackgroundFetch status.
int status = await BackgroundFetch.status;
setState(() {
_status = status;
});
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
}
我假设问题不需要提取中调用的函数中的内容。
我在手机和模拟器上尝试了此操作,然后使用了Xcode-> Simulate Background Fetch并正确运行。当我打开应用程序时,它也可以正常运行。不幸的是,它在15分钟后没有运行。有什么我想念的吗?
我如何更改代码以使后台获取每15分钟发生一次?
答案 0 :(得分:1)
是的,我花了很多时间尝试解决此问题,但是没有成功,所以我切换了,我猜您想做的是在没有Firebase的情况下或从像我这样的API处理您自己的通知,是这样,搜索之后,我可以在工作管理器软件包的帮助下完成此任务。如此易于使用和实施,请尝试一下。