如果当 iOS 应用程序在后台时 NSTimer 不起作用,我怎样才能让我的应用程序定期唤醒?
我注意到某些应用程序(例如 Skype)在后台运行。 我想让我的应用程序也在后台运行,每 1 秒醒来更新一些数据,然后再次进入睡眠状态。 我该怎么做? 我发现 NSTimer 不能在后台工作。
I have noticed that some apps e.g. Skype run in the background.
I would like to have my app run in the background also, waking up every 1 seconds to update some data and then going to sleep again.
How can I do this?
I gather that NSTimer's do not work in the background.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你不能。 IP 语音应用程序对此有一个特殊的例外,基本上系统为它们管理网络套接字,并在有数据时唤醒它们。没有办法用计时器做同样的事情。
顺便说一句,每秒唤醒你的应用程序,你的电池撑不了半天。
You can't. Voice-over-IP apps get a special exception for this, basically the system manages a network socket for them and wakes them up if there's data. There's no way to do the same with a timer.
By the way, waking your app every second, your battery wouldn't last half a day.
请参阅在后台执行代码
See Executing Code in the Background
您需要使用推送通知将信息推送到应用程序(例如 Facebook 或 Skype 应用程序)。请参阅 Apple 提供的此文档,介绍如何使用推送通知。
但不是每一秒都会耗尽电池电量。除此之外,除非您运行 VoIP 应用程序,否则没有其他方法。
You would need to use push notifications to push information to the app (like the Facebook or Skype app). See this documentation from Apple on how to use push notifications.
Not every second though, that would drain the battery. Other than that, there isn't really a way unless you are running a VoIP app.