iPhone 应用程序可以在后台运行多长时间?

Posted

技术标签:

【中文标题】iPhone 应用程序可以在后台运行多长时间?【英文标题】:How long can an iPhone app live in the background? 【发布时间】:2010-08-06 23:02:05 【问题描述】:

我似乎找不到明确的答案——我正在指定一个 iPhone 应用程序,我希望它在后台运行并在一天中的特定时间通知用户。所以用户会在早上启动应用程序,然后继续使用他们的手机,然后应用程序每隔几个小时就会弹出一个通知对话框。

我的应用会被操作系统(自动)关闭吗?或者它会永远存在,并在需要时通知用户?

谢谢, 埃里克

【问题讨论】:

【参考方案1】:

ios 4上后台运行基本上有3种:

    在后台运行以“完成”内容(例如上传帖子或图片,完成处理某些内容等)。你要求操作系统在用户切换到另一个应用程序后给予你额外的时间,它会告诉你你有多少时间。你不能无限期地在后台运行。

    在后台运行以执行特定操作:VoIP、跟踪位置(例如用于 GPS 导航)或播放音频。你只能做你告诉操作系统你会在后台做的事情。

    本地通知 (UILocalNotification)。根据您的描述,这就是您要查找的内容。您实际上并没有在运行,您只是安排通知,当需要通知用户时,他们会收到通知并可以转到您的应用程序。如果您需要动态通知用户(即您不知道他们需要在什么时间收到通知,并且不是位置或 VoIP 触发的),您可能需要查看推送通知。

Apple 在这里有一个很好的概述: http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

【讨论】:

谢谢,这太棒了,我认为你是对的—— UILocalNotification 可能会做我想做的事。好奇,对于第二种类型的后台处理(您在上面描述的),我是否仅限于进行 VoIP、位置跟踪和音频类型的活动?或者我可以在后台做任何我想做的事吗? 差不多。对于连续的后台操作,目前只允许这三种类型的活动。您在合同上(App Store)都受到限制,只能做您说要做的事情,以及您可以进行的 API 调用类型,例如当你说你会做背景音频然后去调用一个OpenGL ES函数时,你会马上被杀死。 啊,还有一个注意事项。最近,一位开发人员试图通过简单地播放无声音频并做一些额外的事情来规避这一点(这并没有触及任何“立即杀死”类型的功能)。该应用程序被拒绝,但苹果显然告诉他们,如果他们播放有用的音频而不是静音,则该应用程序可能会被批准(即使它不仅仅是播放音频):tapbots.com/blog/pastebot/pastebot-music-in-background 这在 iOS 7 上仍然有效吗? @rraallvv 基本还是一样的。您可以要求在后台执行更多操作,例如下载(定期获取、报亭和由通知触发)、蓝牙和附件通信。

以上是关于iPhone 应用程序可以在后台运行多长时间?的主要内容,如果未能解决你的问题,请参考以下文章

UIApplication 将在后台运行多长时间

如何声明必须在后台运行的 iPhone 应用程序?

iPhone:当用户单击主页按钮时,是不是可以关闭应用程序而不是在后台运行?

iPhone应用程序在后台运行时检测wifi网络

如何让我的应用在 iPhone 上后台运行?

在iphone中长时间在后台运行应用程序