Reproduce sonido en iPhone incluso en modo silencioso

Quiero hacer una aplicación que cree sonido, música o sonido del sistema cuando un iPhone está en modo silencioso. ¿Es posible reproducir cualquier tipo de sonido ya sea música o tonos del sistema cuando está en modo silencioso?

No es aconsejable, pero quién soy yo para decir que no puedes hacerlo. Es posible que tenga una buena razón para reproducir el sonido.

Si está utilizando sesiones de audio, incluya al comienzo de su archivo y

 [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil]; 

debería hacer el truco. Tenga en cuenta que si reproduce música o sonidos, la reproducción del iPod se pausará.

Una vez hecho esto, probablemente en algún lugar de la inicialización de una de sus clases que reproduzca los sonidos, puede instanciar sonidos como este:

 // probably an instance variable: AVAudioPlayer *player; NSString *path = [[NSBundle mainBundle] pathForResource...]; NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url]; 

Cuando lo haya hecho, puede jugar con él en cualquier momento que desee con:

 [player play]; // Play the sound [player pause]; // Pause the sound halfway through playing player.currentTime += 10 // skip forward 10 seconds player.duration // Get the duration 

Y otras cosas bonitas. Busque la referencia de la clase AVAudioPlayer .

Sí, puede reproducir sonido cuando el teléfono está configurado para vibrar. Simplemente use la clase AVAudioPlayer.

Por defecto, reproducir un sonido de Audio Session ~ no ~ respetará la configuración del interruptor de silencio en el iPhone. En otras palabras, si realiza una llamada para reproducir un sonido y el interruptor silencioso (hardware) del iPhone está configurado en modo silencioso, aún escuchará el sonido.

Esto es lo que quieres. Entonces, ahora sabe que al jugar una Sesión de audio cuando su teléfono está en modo silencioso, reproducirá el sonido, solo necesita saber cómo crear una sesión de audio para reproducir el sonido, así: tomado de este sitio web: http: // iosdevelopertips .com / audio / play-short-sounds-audio-session-services.html

 SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:@"RapidFire" ofType:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID); AudioServicesPlaySystemSound (soundID); 

Para que esto funcione, deberá importar el archivo de encabezado y también agregar el cuadro AudioToolbox.framework a su proyecto.

Y eso es.

Entonces, a partir de esta respuesta, ahora sabe que puede reproducir el sonido mientras el teléfono está vibrando. No necesita código adicional o especial para permitirle hacer esta funcionalidad como ya lo hace de manera predeterminada.

Pk

Funciona en iOS 6 y superior

 NSError *setCategoryErr = nil; NSError *activationErr = nil; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&setCategoryErr]; [[AVAudioSession sharedInstance] setActive:YES error:&activationErr]; 

Y para Swift 2 y Swift 3

  do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) } catch { print(error) } 

Solo ponga esto en su viewDidLoad :

 UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 

Para reproducir un sonido en modo silencioso e incluso cuando se trata de fondo, intente esto:

Ponga este código en la aplicación: didFinishLaunchingWithOpitons:

 [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

y este código en applicationDidEnterBackground:

 [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

También configure un modo de fondo de Playing Audio / Air Play e incluya el encabezado AVFoundation.

para Objective C, podría reproducir el sonido del sistema con el siguiente código:

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; *The system path could be modified.* NSString *path = @"/System/Library/Audio/UISounds/begin_record.caf"; NSURL *url = [NSURL fileURLWithPath:path]; player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; [player play];