Ermitteln des Typs des iPhone-Interrupts

9

Ich kann erkennen, dass das iPhone eingeschlafen war und aus dem Schlaf zurückkam, indem ich die applicationWillResignAktiv und applicationDidBecomeActive nutze. Aber wie finde ich heraus, welche Art von Interrupt es war? Ich mache eine Audio-Player-Anwendung, und muss das Audio spielen, wenn das iPhone schlafen geht (was ich weiß). Aber ich muss den Ton unterbrechen, wenn eine Nachricht, ein Alarm oder eine Batterieunterbrechung auftritt. Außerdem muss ich das Audio wieder aufnehmen, wenn das Ereignis vorbei ist.

Wie kann ich diese verschiedenen Interrupts unterscheiden?

    
Prashant 13.12.2009, 07:09
quelle

2 Antworten

5

Diese Informationen stehen Ihrer App wahrscheinlich nicht zur Verfügung, aber hier sind einige Dinge, die Sie ausprobieren sollten.

  1. Überprüfen Sie in applicationWillResignActive: die Objekte NSNotification und userInfo, um festzustellen, ob dort Hinweise vorhanden sind.

  2. Registrieren Sie sich, um alle Benachrichtigungen zu erhalten, die an das Standard-Benachrichtigungscenter gesendet wurden:

    %Vor%

Ihre Methode wird aufgerufen, wenn etwas gepostet wird. Protokollieren Sie das Benachrichtigungsobjekt und das userInfo-Wörterbuch. Möglicherweise wird eine nützliche Benachrichtigung angezeigt. Wenn Sie einen finden, können Sie sich nur dafür registrieren.

  1. Dies ist am hackigsten, aber Sie können möglicherweise auf die Warnung zugreifen, die angezeigt wird, wenn es sich um eine Warnmeldung oder eine Warnmeldung handelt. Warnungen werden in einem UIWindow über das Haupt-UIWindow Ihrer App angezeigt. Sie können sich für UIWindowDidBecomeVisibleNotification registrieren und sich dann die Unteransichten des Fensters ansehen, um zu sehen, ob Sie eine Warnung oder einen anderen nützlichen Hinweis finden können.

Alle oben genannten Methoden basieren auf undokumentiertem Verhalten und könnten möglicherweise Ihre Einreichung aus dem App Store ablehnen. Keiner von ihnen beinhaltet private Methodenaufrufe, obwohl Sie argumentieren könnten, dass die Beobachtung eines nicht dokumentierten Benachrichtigungsnamens als private API gilt. Am Ende ist nur die Meinung von Apple wichtig.

Ich persönlich würde es versuchen und sicherstellen, dass der Code bei einem Systemwechsel fehlerfrei ausfällt.

    
benzado 13.12.2009 23:24
quelle
0

Verwenden Sie eine Audiositzung ?

    
Archie 16.04.2010 19:39
quelle