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