Według dokumentów Apple możemy zidentyfikować dotknięcie użytkownika powiadomieniem, sprawdzając, czy zmienna stanu aplikacji jest nieaktywna (link).Wykrywanie kranu użytkownika po powiadomieniu
iOS Uwaga: iOS, można określić, czy dana aplikacja jest uruchomiona wskutek użytkownikowi dotknięcie przycisku akcji lub czy zgłoszenie został dostarczony do aplikacji już uruchomiony przez zbadaniu stanu aplikacji . W implementacji delegata aplikacja: didReceiveRemoteNotification: lub aplikacja: didReceiveLocalNotification: metoda, uzyskaj wartość właściwości applicationState i oceń ją. Jeśli wartość wynosi UIApplicationStateInactive, użytkownik stuknął przycisk akcji; jeśli wartość to UIApplicationStateActive, aplikacja otrzymała powiadomienie z wyprzedzeniem, gdy otrzymała powiadomienie.
Ale widzę przypadek użycia tam, gdzie istnieje system ostrzegania (By system ostrzegania, to znaczy powiadomienie pogląd przedstawiony w planie aplikacji, który jest kontrolowany przez iOS) na pierwszym planie, a aplikacja jest nieaktywna state (Kiedy pojawi się "alert systemowy", aplikacja za nią jest nieaktywna przez iOS, ustawiając aplikację application state na UIApplicationStateInactive), ale użytkownik nadal będzie mógł zobaczyć zawartość aplikacji na ekranie. Patrz załącznik poniżej:
W tym stanie, jeśli aplikacja otrzymuje powiadomienie, będzie zachowywać się jak gdyby zapukał powiadamiania użytkownika. Czy istnieje rozwiązanie, aby rozwiązać ten przypadek użycia?
Dość mylące. Co dokładnie oznacza "alert systemu na pierwszym planie, a aplikacja jest w stanie nieaktywnym"? –
@HinataHyuga Na zrzucie ekranu mam przykład alertu systemowego (alert powiadomień na aplikacji Gmail), który jest kontrolowany przez iOS, a nie przez aplikację. W tym momencie iOS traktuje aplikację, ponieważ jest w stanie nieaktywnym (aplikacja status aplikacji zostanie wyłączona). – Shashank
za każdym razem 'application: didReceiveLocalNotification:' wywołanie metody po otrzymaniu powiadomienia. – iPatel