gpt4 book ai didi

ios - 在 iOS 5 上锁定屏幕时不会发生 NSTimer 事件

转载 作者:行者123 更新时间:2023-11-28 23:11:18 24 4
gpt4 key购买 nike

我已经看到这个问题出现过几次,但我还没有真正看到一个明确的答案......

从 iOS 5 开始,我的应用程序似乎遇到了一个问题,即如果用户锁定屏幕,我的 NSTimer 在锁定屏幕中大约 20 秒后停止触发。如果用户锁定屏幕,这会使我的应用在每次计时器触发时播放声音毫无意义。

自从我将设备更新到 iOS 5 后才发生这种情况。

我的问题是 1. 是否有任何解决方法可以在更新的设备上使用相同的功能,或者 2. 如果您的应用程序在锁定时不运行,那么推荐的方法是什么,不会收到差评。

最佳答案

当用户锁定屏幕时,the app enters the 'inactive' state .这类似于但不完全相同于将您的应用程序置于后台。 Apple 的文档指出“该应用程序正在前台运行,但当前未接收事件。(尽管它可能正在执行其他代码。)”

但是,在进入非事件状态后,iPhone 确实会完全休眠,除非有东西在运行以保持事件状态……显然,等待 NSTimer 触发不满足此条件。 There is discussion in this previous question.看起来,一种解决方案是在定时器启动时播放声音,并在此期间连续播放无声声音以防止 iPhone 休眠。一个 hack,但至少在这种情况下不是一个完全丑陋的 hack,因为使用声音来保持 iPhone 唤醒以播放声音具有某种对称性。

之前链接的内容:
来自 Apple's guidelines regarding implementing long-running background tasks :

Playing Background Audio
An app that plays audio continuously (even while the app is running in the background) can register as a background audio app by including the UIBackgroundModes key (with the value audio) in its Info.plist file. Apps that include this key must play audible content to the user while in the background.

您是否在您的应用中实现了这一点?如果不是,那是你的问题。

关于 #2:您可以更新应用程序的描述以表明它不能在屏幕锁定的情况下工作,但更好的做法是让它像用户期望的那样工作。 :)

关于ios - 在 iOS 5 上锁定屏幕时不会发生 NSTimer 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8198220/

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