Cette information n'est probablement pas disponible pour votre application, mais voici quelques choses à essayer.
En applicationWillResignActive:
, vérifiez l'objet et les propriétés UserInfo du NSNotification pour voir s'il y a des conseils là.
Inscrivez-vous pour recevoir toutes les notifications affichées au centre de notification par défaut:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotification:) name:nil object:nil];
Votre méthode sera appelée lorsque tout est affiché. Enregistrez l'objet de notification et le dictionnaire userInfo et vous verrez peut-être une notification utile en cours de publication. Si vous en trouvez un, vous pouvez vous inscrire juste pour cela. Ceci est le plus hacky, mais vous pourriez être en mesure d'accéder à l'alerte qui est affichée s'il s'agit d'un message ou d'un avertissement de batterie. Les alertes sont affichées dans une UIWindow sur l'UIWindow principale de votre application. Vous pouvez vous inscrire à UIWindowDidBecomeVisibleNotification, puis regarder les sous-vues de la fenêtre pour voir si vous pouvez trouver une alerte ou un autre indice utile. Toutes les méthodes ci-dessus s'appuieraient sur un comportement non documenté pour fonctionner, et pourraient éventuellement obtenir votre soumission rejetée de l'App Store. Aucun d'entre eux n'implique des appels de méthodes privées, bien que vous puissiez argumenter que l'observation d'un nom de notification non documenté compte comme une API privée. Au final, l'opinion d'Apple est la seule qui compte.
Personnellement, je l'essayerais, en m'assurant que le code échoue gracieusement si et quand le système change.
Essayé A et B, mais il est venu tout vide. Aucune paire Description ou valeur-clé dans l'info-utilisateur. Rien dans l'objet non plus. C'est étrange comment Apple a manqué de mettre dans une telle fonctionnalité simple. N'a pas essayé C, car il semble trop hacky, même pour moi. – Prashant
Vous pourriez vouloir reconsidérer C: si vous supposez simplement qu'une alerte * any * est affichée sur votre application est une raison de mettre en pause la musique, vous ne ferez rien non documenté. Il ne fait que fouiller dans la hiérarchie de vue pour lire le texte d'alerte qui serait hacky. – benzado