Je sais que je dois régler la AudioSession
sur la catégorie 'lecture', ce qui permet d'entendre l'audio même lorsque l'interrupteur de sourdine est activé. C'est ce que je fais, mais le son est toujours coupé quand le commutateur est activé.PlaySystemSound avec l'interrupteur de mise en sourdine
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
AudioServicesPlaySystemSound (soundID);
EDIT: par ailleurs, l'application est un SoundPad. Jouer le son est le seul but de l'application. Voici ce que Apple Doc dit à ce sujet:
Utilisez cette catégorie pour une application dont la lecture audio est de première importance . Votre audio joue même avec l'écran est verrouillé et avec le commutateur Ring/Silent réglé sur silencieux.
EDIT 2: avec l'interrupteur de sourdine sur, le son même coutume de jouer à travers les écouteurs. Je sais que l'utilisateur est roi. Je sais que le commutateur de sourdine a son but. Ceci n'est pas la question. J'essaie d'obtenir une réponse sur le fait que la définition de la catégorie AudioSession
à kAudioSessionCategory_MediaPlayback
n'a pas le résultat attendu.
EDIT 3: suite à la suggestion de Jonathan Watmough, je mis la propriété AudioServices
kAudioServicesPropertyIsUISound
, mais toujours pas de chance. Est-ce que je manque quelque chose?
// set the session property
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,sizeof(sessionCategory), &sessionCategory);
// creates soundID
SystemSoundID soundID;
NSString *path = [[NSBundle mainBundle] pathForResource:soundString ofType:@"wav"];
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path],&soundID);
// Jonathan Watmough suggestion
UInt32 flag = 0;
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(UInt32), &soundID, sizeof(UInt32), &flag);
AudioServicesPlaySystemSound (soundID);
carrément malveillant Semble jouer son lorsque l'utilisateur a coupé son téléphone. Si les choses au niveau du système ne le font pas, pourquoi votre application devrait-elle l'être? À moins que votre application ne soit un "avertissement de fusion de réacteur nucléaire", je ne vois pas pourquoi votre application devrait être autorisée à interrompre une réunion, un mariage ou un enterrement avec du bruit. –
À partir de l'Apple Doc: «Utilisez cette catégorie pour une application dont la lecture audio est primordiale Votre lecture audio se fait même avec l'écran verrouillé et avec le commutateur Ring/Silent réglé sur silent. – samvermette
Alors, qu'est-ce qui vous paraît le plus important? Je suppose qu'à la fin de la journée, ils ont ouvert votre application car j'ai oublié que votre application ne peut pas exécuter des actions sans les ouvrir mais encore quand ils ont leur téléphone en sourdine et n'obtiennent aucun bruit qui semble être le comportement désiré. –