如何让iPhone应用程序在后台运行完全运行

首先,我知道只支持voip,audio和位置应用程序在后台运行,并且只在audio播放或使用位置服务时运行。

我想知道的是,如果有一种方法可以让我的应用程序在后台运行,并且不影响电池寿命。

这样,我的应用程序的用户可以select设置,以保持应用程序,只要他想要的时间,只是他希望的时间量。 例如,如果他正在等待某些需要应用程序运行的东西,那么在收到消息之后,他可以closures保持活动function。

我不知道这是否可能,但我已经阅读了一些说这样的post,但不幸的是,他们没有说如何=(

更新:在本教程中 ,我发现Acrobits在Apple Store上有两个应用程序“可以强制应用程序在后台保持活跃状态​​”。 所以有办法做到这一点?

在您的应用程序被定向到后台之后,您可以在有限的时间内执行任务,但只能在提供的时间内完成。 长时间运行会导致您的应用程序被终止。 请参阅“iOS应用程序编程指南” 中的 “ 在后台完成一个长时间运行的任务 ”一节,了解如何进行此操作。

其他人则背负着在后台播放audio作为后台处理的一种手段,但是如果audio播放是合法的function,苹果公司只会接受这样的应用程序。 苹果公布的审查指南第2.16项指出:

多任务应用程序可能只能使用后台服务来达到预期目的:VoIP,audio回放,位置,任务完成,本地通知等

从iOS 7开始,有更新的应用程序在后台运行。 苹果现在认识到,应用程序必须不断地下载和处理数据。

这是所有可以在后台运行的应用程序的新列表。

  1. 在后台播放可听内容的应用,例如音乐播放器应用
  2. 在后台录制audio内容的应用程序。
  3. 随时向用户通知其位置的应用,例如导航应用
  4. 支持网际协议语音(VoIP)的应用
  5. 需要定期下载和处理新内容的应用程序
  6. 从外部附件获得定期更新的应用程序

您可以使用X代码5+在Info.plist中声明应用程序支持的后台任务。 例如。 将UIBackgroundModes键添加到应用的Info.plist文件中,并向该arrays添加“获取”值,这样您的应用就可以定期从networking中下载和处理less量内容。 您可以在XCode 5的应用程序属性的“function”选项卡中执行相同操作(附加快照)

XCode 5中的功能选项卡 您可以在Apple文档中find更多关于此的信息

如果任何后台任务运行超过10分钟,则该任务将被暂停,并使用beginBackgroundTaskWithExpirationHandler指定代码块来清理该任务。 可以使用[[UIApplication sharedApplication] backgroundTimeRemaining]来检查背景剩余时间。 最初,当应用程序在前台backgroundTimeRemaining设置为更大的值。 当应用程序转到后台时,您可以看到backgroundTimeRemaining值从599.XXX(10分钟)减less。 一旦backgroundTimeRemaining变为零,后台任务将被暂停。

//1)Creating iOS Background Task __block UIBackgroundTaskIdentifier background_task; background_task = [application beginBackgroundTaskWithExpirationHandler:^ { //This code block is execute when the application's //remaining background time reaches ZERO. }]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //### background task starts //#### background task ends }); //2)Making background task Asynchronous if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) { NSLog(@"Multitasking Supported"); __block UIBackgroundTaskIdentifier background_task; background_task = [application beginBackgroundTaskWithExpirationHandler:^ { //Clean up code. Tell the system that we are done. [application endBackgroundTask: background_task]; background_task = UIBackgroundTaskInvalid; }]; **//Putting All together** //To make the code block asynchronous dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //### background task starts NSLog(@"Running in the background\n"); while(TRUE) { NSLog(@"Background time Remaining: %f",[[UIApplication sharedApplication] backgroundTimeRemaining]); [NSThread sleepForTimeInterval:1]; //wait for 1 sec } //#### background task ends //Clean up code. Tell the system that we are done. [application endBackgroundTask: background_task]; background_task = UIBackgroundTaskInvalid; }); } else { NSLog(@"Multitasking Not Supported"); } 

为了运行iOS设备,请将您的应用程序设置为audio播放器/录音机或VOIP应用程序,这是合法的应用程序提交到应用程序商店的应用程序,或者是仅供您自己使用的虚拟应用程序。

即使这样做也不会使应用程序“全面运行”,不过这些应用程序仅限于有限的API。

取决于它做什么。 如果你的应用占用太多的内存,或者调用函数/类不应该,SpringBoard可能会终止它。 然而,它很可能会被苹果拒绝,因为它不会遵循其背景用途。

可能是链接将帮助bcz你可能不得不实施Appdelegate中的应用程序运行在后台方法中的代码..也请参阅developer.apple.com网站的应用程序类这里是运行的应用程序在后台