如何防止我的应用程序在iPhone上的后台运行

问题描述:

有什么办法可以让应用程序退出,而不是在按下主页按钮时进入后台?出于安全原因,如果应用程序没有在后台运行,但在推送家时实际关闭,那会更好。这是而不是用于用户安全,而是用于应用上的公司数据,因此它不是用户的选择。除了强迫苹果退出之外,我找不到任何办法戒烟。如何防止我的应用程序在iPhone上的后台运行

+0

还有UIApplicationExitsOnSuspend,但您可以简单地清除applicationDidEnterBackground:app委托方法中的任何身份验证信息,并在应用程序返回到前台时强制用户重新登录(applicationDidBecomeActive :) – 2010-07-11 09:27:04

opting out of background execution在iPhone应用程序编程指南:

“如果你不想让你的应用程序在后台继续当它退出,你可以明确地选择退出后台执行模型通过添加UIApplicationExitsOnSuspend关键应用程序的Info.plist文件,并将其值设置为YES。

当应用程序选择退出,非运行,非活动和活动状态之间它的周期和永远不会进入后台或暂停状态。

当用户点击主页按钮以退出应用程序时,应用程序委托的applicationWillTerminate:方法被调用,应用程序有大约五秒钟的时间清理并退出,然后终止并移回到未运行状态。

只需转到您的项目的info.plist并选中“应用程序不在后台运行”为YES。

不幸的是,在尝试完所有事情之后,我仍然无法看到我的应用程序正在按回车键退出。即使UIApplicationExitsOnSuspend为YES并且在plist文件中为boolean类型,它总是进入后台,我从Simulator中移除了应用程序,重新启动了Xcode和Simulator并尝试了所有建议。

最后我开始调试应用程序,发现一个函数阻止应用程序退出。该功能相当简单,并从网络下载一些图像,并从appDelegate文件的applicationDidFinishLaunching中调用。该功能是委托创建网络连接和下载数据到其他一些可重复使用的类的任务,在那里我有下面的代码:

if(isBackgroundProcessingSupported){ 
     appDelegate.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{}]; 
     [NSURLConnection connectionWithRequest:request delegate:self]; 
    } 

所以最后事实证明,上面的代码是负责将应用到背景上按主页按钮。当我评论上述代码时,我的应用程序正在退出而不是进入后台。

注意:代码早在那里,因为最初的应用程序支持后台处理。

希望这可以帮助那些也在努力寻找像我这样的理由的人。