Ios 我能检测出是什么原因导致;应用程序WillResignActive“;使命感

Ios 我能检测出是什么原因导致;应用程序WillResignActive“;使命感,ios,background,multitasking,Ios,Background,Multitasking,我知道当您点击Home(主页)按钮或Sleep/Wake(睡眠/唤醒)按钮时,会调用“applicationWillResignActive”。当发生中断(如本机调用)时也会调用它。但是,我如何确定这种方法中的哪一种结果并执行不同的实现呢?您不能直接确定所有原因,但可以将其缩小一点 如果按下home(主页)按钮并将应用程序发送到后台,您的应用程序将在UIApplicationLegate上收到一个ApplicationIdentinterBackground:呼叫。请注意,在调用应用程序will

我知道当您点击Home(主页)按钮或Sleep/Wake(睡眠/唤醒)按钮时,会调用“applicationWillResignActive”。当发生中断(如本机调用)时也会调用它。但是,我如何确定这种方法中的哪一种结果并执行不同的实现呢?

您不能直接确定所有原因,但可以将其缩小一点

如果按下home(主页)按钮并将应用程序发送到后台,您的应用程序将在UIApplicationLegate上收到一个
ApplicationIdentinterBackground:
呼叫。请注意,在调用
应用程序willresignactive:
后,您将收到此消息,因此它可能对您没有帮助

您还可以注册一个音频中断的侦听器

AudioSessionInitialize (
                        NULL,                          // 'NULL' to use the default (main) run loop
                        NULL,                          // 'NULL' to use the default run loop mode
                        audioSessionInteruptionListener,  // a reference to your interruption callback
                        self                       // data to pass to your interruption listener callback
                        );
如果调用了
AudioSessionInterruptionListener
,并且状态为
kaAudioSessionBeginInterruption
,然后应用程序将重新激活:,则您知道中断是由电话或警报引起的。我认为你不能得到更多的信息

编辑

事实上,我认为你可以更进一步,识别一个电话和报警中断。现在这还没有被测试过,只是为了给更多的调查提供一个起点

我记得注册了一个回调以捕获音频路由,当收到电话时,音频路由从扬声器/耳机更改为无到接收器。因此,我想你可以使用上面描述的方法捕获音频中断,并捕获音频路由更改。如果音频路由成为接收器,则中断是一个电话。否则,那是另外一回事,比如闹钟


我的目标是iOS 5.0,因此它可能不适用于以前的版本,您必须与文档确认。

您无法直接确定所有原因,但您可以将其缩小一点

如果按下home(主页)按钮并将应用程序发送到后台,您的应用程序将在UIApplicationLegate上收到一个
ApplicationIdentinterBackground:
呼叫。请注意,在调用
应用程序willresignactive:
后,您将收到此消息,因此它可能对您没有帮助

您还可以注册一个音频中断的侦听器

AudioSessionInitialize (
                        NULL,                          // 'NULL' to use the default (main) run loop
                        NULL,                          // 'NULL' to use the default run loop mode
                        audioSessionInteruptionListener,  // a reference to your interruption callback
                        self                       // data to pass to your interruption listener callback
                        );
如果调用了
AudioSessionInterruptionListener
,并且状态为
kaAudioSessionBeginInterruption
,然后应用程序将重新激活:,则您知道中断是由电话或警报引起的。我认为你不能得到更多的信息

编辑

事实上,我认为你可以更进一步,识别一个电话和报警中断。现在这还没有被测试过,只是为了给更多的调查提供一个起点

我记得注册了一个回调以捕获音频路由,当收到电话时,音频路由从扬声器/耳机更改为无到接收器。因此,我想你可以使用上面描述的方法捕获音频中断,并捕获音频路由更改。如果音频路由成为接收器,则中断是一个电话。否则,那是另外一回事,比如闹钟

我的目标是iOS 5.0,因此它可能不适用于以前的版本,您必须与文档确认