Flutter iOS及Android应用实现周期性后台拉取任务的方案咨询
Flutter双端周期性后台任务解决方案
推荐适配包
workmanager是目前双端一致性、可靠性表现最优的后台调度包,底层分别对接安卓官方WorkManager、iOS官方BGTaskScheduler,原生系统级调度能力对15分钟以上的长周期任务支持度很高。你可以自定义周期间隔、运行时网络约束,安卓端默认支持最长10分钟的任务运行窗口,iOS端可主动申请延长后台执行权限,足够覆盖你最长1分钟的接口等待需求。- 该包iOS端调试阶段不需要加入Apple Developer Program,仅上架App Store时才需要付费,大学项目如果仅做本地调试、校园内部分发,完全可以规避99欧元的会员费开销。
后台任务防杀死优化方案
针对操作系统后台任务限制,可以通过以下操作提升可靠性,实现90%以上的触发率,基本符合你对时间间隔的要求:
- 安卓端:引导用户开启忽略电池优化权限,同时允许应用后台活动,基本可以避免国产系统对后台任务的误杀。
- iOS端:应用退到后台时主动申请临时后台执行权限,配合BGTaskScheduler的调度规则,15-30分钟的周期任务触发成功率可以达到85%以上,等待接口返回过程中不会被系统提前终止。
自建推送服务的必要性说明
不需要自建服务端推送服务,iOS系统的所有推送通知都必须走APNs通道,不管是否使用FCM,只要使用系统级推送能力就必须加入Apple Developer Program,自建推送完全无法规避会员费开销,反而会增加额外的服务端开发成本。
如果你的项目允许仅在用户未手动划掉应用的场景下执行拉取任务,可以使用flutter_isolate开启独立的后台隔离执行线程,只要应用进程存活,就能100%按照设定的时间间隔执行拉取逻辑,不受系统后台调度规则限制。
内容的提问来源于stack exchange,提问作者doxblek
相关产品推荐
相关产品推荐

