5

Gdy użytkownik kliknie na zdalne powiadamianie, następujące zwrotna jest wyzwalane w app delegata:jak wykrywać zdalne powiadomienia z kliknięciami iOS?

-application:didReceiveRemoteNotification:fetchCompletionHandler:

w tym scenariuszu aplikacja jest uruchomiona, a państwo aplikacja jest UIApplicationStateActive które interpretują to jako użytkownik Aktywnego na zdalne powiadomienie.

problem: Ta metoda może również uzyskać wywołana, gdy zdalne powiadamianie przybywa i aplikacja jest na pierwszym planie ze stanu nieaktywnego.

przykład: Gdy widok centrum zgłoszenie jest otwarty (przesuń od górnej krawędzi ekranu w dół) lub UIAlert jest otwarty. W obu przypadkach stan aplikacji to UIApplicationStateActive i nie ma możliwości stwierdzenia, czy jest to powiadomienie o czynnościach użytkownika, czy odebranie systemu.

Q: Jak mogę sprawdzić, czy didReceiveRemoteNotification zwrotna jest odpowiedzią użytkownik dotykając na zdalne powiadamianie vs przybyciem zdalne powiadamianie?

Odpowiedz

1
UIApplicationState state = [application applicationState]; 
    if (state == UIApplicationStateActive) 
    { 
      //When your app is in foreground and it received a push notification 
    } 
    else if (state == UIApplicationStateInactive) 
    { 
      //When your app was in background and it received a push notification 
    } 

Ponadto, aplikacja didFinishLaunchingWithOptions zostanie wywołana, jeśli aplikacja nie była uruchomiona, a użytkownik stuknął w powiadomienie. Nie próbowałem tego, ale mogę założyć, że możesz uzyskać szczegóły powiadomień z opcji.

+0

tx za odpowiedź, to inny problem. , gdy aplikacja jest na pierwszym planie, a centrum powiadomień jest otwarte, aplikacja jest w stanie nieaktywnym. Teraz, gdy wywoływana jest 'didReceiveRemoteNotification', mogą to być 2 przypadki: Działanie 1 użytkownika po powiadomieniu w centrum powiadomień 2 nadejście nowego powiadomienia push. Problem polega na tym, że nie można odróżnić tego 2 scenariusza. –

Powiązane problemy