首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreBluetooth后台执行10秒?

CoreBluetooth后台执行10秒?
EN

Stack Overflow用户
提问于 2016-08-16 06:51:57
回答 3查看 1.4K关注 0票数 0

因为苹果文档对于这一点非常模糊:

代码语言:javascript
复制
 Upon being woken up, an app has around 10 seconds to complete a task

这是否意味着10秒后,应用程序将回到其“暂停”状态?从理论上讲,在这10秒之后,是否有可能“强迫”应用程序保持清醒?(私人应用)。

在我的例子中,这个设备会连接到一辆汽车上。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-16 07:28:36

这是否意味着10秒后,应用程序将回到其“暂停”状态?

如果你仔细阅读:

一旦被唤醒,应用程序就有大约10秒的时间来处理数据。理想情况下,它应该尽可能快地处理数据,并允许自己再次被挂起。但是,如果需要更多的时间,应用程序可以使用beginBackgroundTaskWithExpirationHandler:方法来请求额外的时间;不过,只有在绝对必要的情况下才能这样做。

应用程序通常通过后台模式(如位置服务、音频、推送通知等)来唤醒,而对于某些模式,比如位置服务,它将保持清醒直到捕获位置数据,而对于一些应用程序来说,它不会像推送通知那样长时间保持清醒。因此,这取决于正在执行的任务。对于蓝牙,如果它与另一个蓝牙设备连接,那么它就会保持清醒。

从理论上讲,在这10秒之后,是否有可能“强迫”应用程序保持清醒?(私人应用)。

是的,有可能。

上述每一种模式都让系统知道,您的应用程序应该在适当的时候被唤醒或启动,以响应相关事件。例如,一个开始播放音乐然后移动到后台的应用程序仍然需要执行时间来填充音频输出缓冲区。启用音频模式会告诉系统框架,它们应该继续在适当的时间间隔内对应用程序进行必要的回调。如果应用程序不选择此模式,则当应用程序移动到后台时,应用程序播放或录制的任何音频都会停止。

注意:如果您需要它作为您的私人应用程序,那么您可以检查这个这里。如果您添加解决方案并申请appstore,您的应用程序将被拒绝。

票数 3
EN

Stack Overflow用户

发布于 2016-08-16 07:07:45

在XCode中,转到您的项目->Capabilities>后台模式,并将背景模式标记为On。Mark还使用了蓝牙LE附件:

应用程序与蓝牙外设可以要求唤醒,如果外围交付更新时,应用程序被挂起。这种支持对于定期传输数据的蓝牙-LE附件非常重要,例如蓝牙心率带。您可以支持从Xcode项目中的Capabilities选项卡的背景模式部分使用蓝牙附件。(还可以通过在应用程序的UIBackgroundModes文件中包含带有蓝牙中心值的UIBackgroundModes键来启用这种支持。)启用此模式时,核心蓝牙框架将打开相应外围设备的任何活动会话。此外,新的数据从外围到达,使系统唤醒应用程序,以便它可以处理数据。系统还会唤醒应用程序来处理附件连接和断开连接通知。

有关更多细节,您可以参考苹果文档

票数 1
EN

Stack Overflow用户

发布于 2016-08-16 07:01:38

试试这个:

代码语言:javascript
复制
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38968325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档