2011-07-21 11 views
6

Mam aplikację Czat wideo, którą chcę odłączyć od połączenia, gdy urządzenie jest zablokowane, ale pozostań w kontakcie po otrzymaniu wiadomości SMS, kalendarza, wyczerpania baterii lub innego rodzaju powiadomienia. Problem polega na tym, że nie potrafię zrozumieć, jak określić, co wywołuje wywołanie aplikacji applicationReportActive.Jak wykryć, co wywołało applicationWillResignActive?

Zastanawiam się nad wprowadzeniem pewnego rodzaju limitu czasu, w którym gdyby aplikacja ApplicationDidBecomeActive nie została wywołana w ciągu określonej liczby sekund, odłączyłabym się, ale fałszywie zakłada, że ​​użytkownik zignoruje lub zaakceptuje otrzymane powiadomienie w ciągu tej liczby sekund.

Czy ktoś może mi pomóc w ustaleniu, co spowodowało wywołanie selektora applicationWillResignActive?

Wielkie dzięki, Mason

+0

Czy sprawdziłeś tutaj wszystkie zmiany stanu UIApplication? http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UIApplicationDelegate – Luke

+0

@Luke, Tak, zrobiłem. Przeczytałem również [to] (http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40007072-CH3-SW10) w sekcji "Wracając do przerwania", ale nie udało mi się znaleźć niczego przydatnego do rozwiązania mojego problemu. – jmason

+0

@Luke Również, gdy sprawdziłem UIApplicationState w applicationWillResignActive, obecny stan to * UIApplicationStateActive * – jmason

Odpowiedz

5

myślę krótka odpowiedź może być, że tak naprawdę nie można określić, co konkretnie powoduje wywołanie rezygnacji, jednak można tylko planować zgodnie jeśli rzeczywiście idzie w tle lub nie.

Sprawdź ten link, gdzie znajduje się opis czynności wykonywanych wielozadaniowo.

http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

Powodzenia, to wydaje się niesamowitym facetem!

+2

W rzeczywistości nie można dokładnie określić, co powoduje wezwanie do rezygnacji, ale znalazłem pracę dla mojego scenariusza. Gdy urządzenie jest zablokowane, AVFoundation przestaje wysyłać przechwycone ramki do swojego uczestnika. Tak więc, gdy wykonuję połączenia wideo, wiem, że urządzenie jest zablokowane, gdy przestaję otrzymywać nowe ramki po wywołaniu funkcji willResign. Dzięki James, jesteś niesamowitym facetem. – jmason

0

W moim przypadku było zatrzymanie przechwytywanie wideo na NSNotification.Name.UIApplicationWillResignActive

Teraz używam: NSNotification.Name.UIApplicationDidEnterBackground

To nie jest wyzwalany kiedy nadejdzie wiadomość lub na wypadek, gdyby ktoś dzwonił do urządzenia przechwytującego.

Powiązane problemy