Используя текущий iOS SDK, единственный способ, которым ваше приложение может фиксировать прерывания, - это использование interruptionListenerCallback
обратного вызова.но я сомневаюсь, что это будет полезно для вас, но вы можете попробовать.
В основном это позволяет вам прослушивать события, например, активируется тревога или телефон звонит.остановите и возобновите воспроизведение аудио в вашем приложении, и оно является частью AudioToolbox
framework.
void interruptionListenerCallback (
void *inUserData,
UInt32 interruptionState
) {
if (interruptionState == kAudioSessionBeginInterruption) {
NSLog (@"Interrupted. Stopping playback or recording.");
[_player stopAudio];
interruptedOnPlayback = YES;
} else if ((interruptionState == kAudioSessionEndInterruption) && interruptedOnPlayback) {
// if the interruption was removed, and the app had been playing, resume playback
[_player startAudio];
interruptedOnPlayback = NO;
}
}
// Set the callback in your app delegate
OSStatus mystatus = AudioSessionInitialize (
NULL,
NULL,
interruptionListenerCallback,
self
);
Как видите, оно действительно ограничено.Ваше приложение должно работать в фоновом режиме, и вы не сможете узнать, что произошло, или что сделал пользователь.