2017-08-11 1 views
1

Ich habe 4 SzenarioiOS - Lesen Sie die Push-Benachrichtigung, sobald empfangen

Wenn die App nicht Gestartet wird

die App Gegeben wurde nicht gestartet oder getötet
Wenn die Push-Benachrichtigung
empfangen und geöffnet die App ohne Antippen der Benachrichtigung
Dann sollte die App die Benachrichtigung erfassen.

Wenn der App im Vordergrund läuft

die App läuft im Vordergrund
gegeben, wenn die Push-Benachrichtigung
Dann ist die App erhalten sollte die Benachrichtigung erfassen.

Wenn die App im Hintergrund läuft

die App läuft im Hintergrund
Wenn die Push-Benachrichtigung erhalten
und öffnete die App ohne Tippen auf die Benachrichtigung
Dann ist die App erfassen sollte die Benachrichtigung Gegeben .

Wenn die App nicht gestartet und gelöscht wird die Benachrichtigung

Gegeben ist die App nicht gestartet oder getötet
Wenn die Push-Benachrichtigung erhalten
und Benutzer gelöscht die Benachrichtigung
und öffnete die App
Dann sollte die App die Benachrichtigung erfassen.

Das erste 3-Szenario arbeitet mit dem folgenden Code feinen

Das letzte Szenario nicht gearbeitet wird, wenn der App nicht gestartet und gelöscht wird die Benachrichtigung

AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    if #available(iOS 10.0, *) { 
     UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: { requests in 
      for request in requests { 
       self.setNotification(userInfo: request.request.content.userInfo as NSDictionary) 
      } 
     }) 
    } 
    return true 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 
+1

** Sie können nicht ** Stellen Sie sich vor, Sie haben 5 Benachrichtigungen auf dem Bildschirm. Und Sie entlassen alle 5 von ihnen und dann starten Sie die App. Wie sollte die App wissen, welche Benachrichtigung sie berücksichtigen sollte? – Honey

+0

danke @Paras Gorasiya – Vignesh

+0

@Honey das war meine Frage? Gibt es eine Möglichkeit, diese Benachrichtigung ohne RestAPI zu erhalten. – Vignesh

Antwort

1

Nach Ihrer Anfrage

Wenn die App nicht gestartet und gelöscht wird die Benachrichtigung

Angesichts der App ist nicht gestartet oder getötet, als die Post Benachrichtigung erhalten und Benutzer gelöscht die Benachrichtigung und öffnete die App dann die App sollte die Benachrichtigung erfassen.

Dies ist nicht möglich, dass ein Normale Push-Benachrichtigung es sei denn, der Benutzer mit dieser Mitteilung in Wechselwirkung tritt. Sie können versuchen Stille Benachrichtigungen, diese werden nicht in der Benutzeroberfläche angezeigt, aber das Steuerelement erreicht die App und Sie können die Daten/Nutzdaten von dort in Ihrem Code verwenden.

Wenn Benutzer die Benachrichtigung von der Leiste löscht, gibt es keine Möglichkeit, diese Informationen abzurufen. Sie können auch versuchen, die gleichen Informationen hinzuzufügen, die im Push in einer API gesendet werden, und sie aufrufen, sobald der Benutzer die App öffnet.

This link befasst sich mit allen Details beteiligt. Entsprechend Ihrer Implementierung können Sie eine Kombination aus beidem versuchen.

+1

Danke @Umar. Ich verwende Stille Benachrichtigung. Das einzige Problem ist, dass die Benachrichtigung gelöscht wird. wenn es keine Möglichkeit gibt, von der API zu kommen. – Vignesh

+0

@Vignesh Wenn Sie eine API auch zum Abrufen von Daten verwenden, was passieren würde, ist es egal, dass der Benutzer die Benachrichtigung löscht, sobald die App geöffnet wird, könnte der Benutzer die neuesten Daten sehen, wie sie über den API-Aufruf kommen würden ... Akzeptieren die Antwort, wenn es half –

Verwandte Themen