Android 在特定时间在颤振应用程序中运行任务
你好,Flitter/移动开发者 我手头有一个特别的问题,我需要一些建议。我需要创建一个应用程序,将在一天中的特定时间执行特定任务。时间每天都会改变,它会在午夜(或非高峰时间)通过REST呼叫获得更新的时间。无论发生什么情况,任务都必须在预定的时间完成,即使是在设备重新启动后,等等。我已经深入研究了这一点,并且我感到Flatter不能很好地处理预定的任务,特别是在iOS中,它可以以任何原因终止应用程序 我研究过的选项有:Android 在特定时间在颤振应用程序中运行任务,android,ios,swift,flutter,scheduled-tasks,Android,Ios,Swift,Flutter,Scheduled Tasks,你好,Flitter/移动开发者 我手头有一个特别的问题,我需要一些建议。我需要创建一个应用程序,将在一天中的特定时间执行特定任务。时间每天都会改变,它会在午夜(或非高峰时间)通过REST呼叫获得更新的时间。无论发生什么情况,任务都必须在预定的时间完成,即使是在设备重新启动后,等等。我已经深入研究了这一点,并且我感到Flatter不能很好地处理预定的任务,特别是在iOS中,它可以以任何原因终止应用程序 我研究过的选项有: workmanager():这似乎是最有希望的,如果不是15分钟的最低频率
这就是我的选择。你认为哪个最可行?如果有比我更有移动经验的人能帮助我,我将不胜感激,也许有一个比我提出的三个更好的解决方案。谢谢。您可以通过Firebase发送数据通知,并通过
onBackgroundMessage
回调处理这些通知。请看这里:
Future\u firebaseMessagingBackgroundHandler(RemoteMessage)异步{
//如果要在后台使用其他Firebase服务,例如Firestore,
//确保在使用其他Firebase服务之前调用'initializeApp'。
等待Firebase.initializeApp();
打印(“处理背景消息:${message.messageId}”);
}
void main(){
FirebaseMessagingBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
从文档(Android/Apple)中:
您可以通过Firebase发送数据通知,并使用
onBackgroundMessage
回调来处理它们。请看这里:
Future\u firebaseMessagingBackgroundHandler(RemoteMessage)异步{
//如果要在后台使用其他Firebase服务,例如Firestore,
//确保在使用其他Firebase服务之前调用'initializeApp'。
等待Firebase.initializeApp();
打印(“处理背景消息:${message.messageId}”);
}
void main(){
FirebaseMessagingBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
从文档(Android/Apple)中:
- 您正在午夜对更新服务器进行DDOS攻击(如果您在同一时区有多个用户)。你可以在几秒钟内错开你的HTTP请求来修复这个问题,但这是一个创可贴,而不是长期解决方案。
- 因为您正在反转依赖关系:听起来时间是服务器的责任(因此您的客户机打电话询问最新时间)。您的客户机不应该是请求服务器更新的客户机,因为现在您的客户机有两个作业:计划更新,同时为用户计划计划任务。让客户机询问服务器是错误的方向。您应该从服务器发送消息以更新设备上的计划
- 即使您确实轮询服务器以获取计划更新,您也应该在需要的时候发出移动应用程序计划通知/警报。使用静默通知是一种已知的解决iOS后台调度限制的方法。在Android上,WorkManager是,您应该使用
AlarmManager
- 下面是另一个StackOverflow如何考虑使用本地通知来解决这个问题:used