gpt4 book ai didi

android - iOS 上的 Flutter Backgroundfetch 不会触发

转载 作者:行者123 更新时间:2023-12-04 15:02:10 24 4
gpt4 key购买 nike

我正在尝试开发一个使用 background_fetch 包 https://pub.dev/packages/background_fetch 的应用程序。在特定时间段内连接到 BLE 设备并接收一些状态数据。在 Android 上,一切正常,并且每 x 分钟可靠地触发一次后台提取。
在 iOS 上,只要我通过 Xcode 手动模拟后台提取,它也可以工作。但是,当我在 iPhone 上运行我的应用程序时,后台获取永远不会被触发。对我来说,很难理解我的代码是否有错误,或者 iOS 是否真的从不触发后台提取。如果操作系统从不触发后台提取,我怎么能触发呢?
我从其他帖子中了解到,只要后台获取在模拟器中工作,一切都被正确编程。
能否以某种简单的方式向我解释后台获取机制在 iOS 上的工作原理?
感谢你并致以真诚的问候。

最佳答案

我想分享一些我在尝试解决这个问题时开始理解的观点:
即使他们在软件包网站上说 iOS 不支持计划任务,我也没有真正理解这意味着什么,因为使用后台任务的概念对我来说不是或仍然不是 100% 清楚。
据我了解,这基本上意味着iOS支持的唯一后台获取机制是在 minimumFetchInterval 参数定义的特定时间段内发生的默认后台获取。这可以至少为 15 分钟或更长时间,但绝不会少于 15 分钟,并使用示例中的以下代码段实现:

int status = await BackgroundFetch.configure(BackgroundFetchConfig(
minimumFetchInterval: 15,
stopOnTerminate: false,
enableHeadless: true,
requiresBatteryNotLow: false,
requiresCharging: false,
requiresStorageNotLow: false,
requiresDeviceIdle: false,
requiredNetworkType: NetworkType.NONE
),
但是,您无法真正测试 fetch 事件 - 无法使用模拟器或真实设备。
使用 Xcode,您可以通过从 IDE 触发来模拟后台提取。但是在定义的时间段之后,模拟器本身永远不会发生后台获取。如果您连接真正的 iPhone 并在此设备上部署您的应用程序,则不会发生这种情况。据我了解,该应用程序将在另一个生命周期中运行(无论这究竟意味着什么),在该生命周期中,应用程序将没有时间来执行后台任务。
尽管如此,如果 iOS 没有为我的应用程序安排后台执行时间,我仍然无法理解如何或何时可以在真实设备上观察我的应用程序行为。我可以确定,如果它可以在模拟器上运行,它也可以在真实设备上运行吗?
如果有更好理解的人可以提供帮助,那就太好了。

关于android - iOS 上的 Flutter Backgroundfetch 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66783089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com