0

我正在尝试构建一个应用程序,其中一部分处理需要区分进入后台的应用程序和当用户按下从多任务窗格中关闭它时退出的应用程序。但是,从我的所有在线研究中,我发现只能执行以下操作之一:

a) 将 info.plist 中的“应用程序不在后台运行”属性设置为“是”,因此将“进入后台”视为终止

b)默认情况下,进入后台的应用程序会发送通知,但从多任务栏终止它不会。

是否可以获得两者的通知并确保应用程序在进入后台时不会终止?非常感谢您的帮助。我正在运行新的 ios 6。

维韦克

4

2 回答 2

2

使用 nsnotification 来检测应用程序何时终止。这将让您知道用户何时从多任务栏终止

 UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(applicationWillTerminate:)
                                             name:UIApplicationWillTerminateNotification
                                           object:app];

它将在您的文件中调用此选择器:

 - (void)applicationWillTerminate:(NSNotification *)notification {
     // Do stuff before termination
 }

否则它将进入后台模式,具体取决于您的 plist 的配置方式

于 2012-09-24T16:36:30.430 回答
1

每当用户从任务管理器窗格中停止应用程序时,都会向应用程序发送一个 SIGKILL 信号,因此它不会正常终止,因此不会调用任何选择器。

如果您想确保应用程序不会(由操作系统终止),应用程序应注册为需要 GPS 或音频背景模式(但请记住,应用程序需要以正确的方式真正使用这些功能,否则它将在审查过程中被拒绝)。

下面是关于委托回调的简单解释:

  • applicationWillResignActive - 无论何时最小化应用程序或收到呼叫
  • applicationDidEnterBackground - 每当用户最小化应用程序时
  • applicationWillTerminate - 每当操作系统决定终止应用程序以节省内存时(但不是在被用户杀死时)
于 2012-09-24T16:37:38.780 回答