42 votes

Jouer le son par défaut des notifications locales lors de l'affichage de UIAlertView?

Je suis en train d'écrire une des rappels application pour iPhone qui affiche des rappels à l'aide de notifications locales.

Si un rappel se déclenche lorsque l'application est en cours d'exécution, la notification n'est pas affichée. Au lieu de cela, l' didReceiveLocalNotification méthode est appelée dans mon délégué d'application, et j'ai imiter le local de la boîte de dialogue de notification par l'affichage d'un UIAlertView avec le rappel de texte.

Lorsque les notifications sont affichées à l'extérieur de l'application, l'appareil vibre et le son spécifié par UILocalNotificationDefaultSoundName est joué. Encore une fois, je tiens à imiter ce dans l'application lors de l'affichage de l' UIAlertView.

Je peux faire vibrer l'appareil en appelant AudioServicesPlaySystemSound(kSystemSoundID_Vibrate), mais je ne peux pas comprendre comment jouer le local de la notification de son par défaut. Il n'y a pas d'équivalent SystemSoundID constante, et je ne suis pas sûr de ce que le chemin serait.

tl;dr je voudrais jouer la notification locale par défaut du son lors de l'affichage d'un UIAlertView. Des idées?

68voto

Andrew Little Points 3507

Bonne question. Idéalement, il y aurait un moyen de sélection d'un système de son à l'aide de AudioServices. Toutefois, la déclaration suivante à partir d'Apple "Son Système de Services de Référence", suggère le contraire:

Dans Mac OS X, lorsqu'un utilisateur a configuré les Préférences Système pour flash l'écran pour les alertes, ou si son ne peut pas être rendue, à l'appel de cette fonction entraîne l'écran clignotant. Dans Mac OS X, passer le constant kSystemSoundID_UserPreferredAlert à jouer le son d'alerte sélectionné par le de l'utilisateur dans les Préférences Système. Dans iOS il n'y a pas de préférée de l'utilisateur d'alerte son.

Depuis, il semble que le kit de développement a peu à offrir, vous pourriez souhaiter pour imiter les sons du système à l'aide de votre propre fichier wav. Il y a une belle bibliothèque sur le lien suivant, peut-être qu'il va avoir le son que vous cherchez: http://sites.google.com/site/iphonesounds/iPhoneOriginalSystemSounds_WAV.zip

Bonne chance!

3voto

sergtk Points 3109

C'est plus de Andrew Peu de réponse.

Pour mieux imiter le son de notification, vous devez également configurer l'audio de la session:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionDuckOthers error:nil];

Ceci est essentiel lorsque vous écoutez de la musique et recevoir une notification lors de cette.

Paramètres de session ci-dessus semble le même que pour le son joué lors de la notification des feux avec application dans le contexte:

  • la musique est réduit au silence avant et repris après le son de notification.
  • appareil silence commutateur est manipulé correctement, le son est joué uniquement lorsque le commutateur est sur
  • le volume est le même (à noter que vous pouvez obtenir de volume différent si vous utilisez le système de son lors de l'application en arrière-plan et les fichiers de Andrew Peu de réponse)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X