2017-07-12 3 views
1

i eine ios Anwendung, wo auf die i Remote-Benachrichtigung zu senden, wenn Benachrichtigung vom Server sendet i -verfügbare = 1 und Ton Inhalt setze = „“ Wenn auf iOS-Gerät i bin mitIOS Benachrichtigung bei Anwendung geschlossen ist

applicaiton (didReceiveRemoteNotification: fetchCompletionHandler :)

ich diese App zu sehen erreicht diese Methode, wenn im Hintergrund, aber wenn app diese Methode geschlossen wird, ist nicht B genannt zu werden ut wird nicht aufgerufen zu werden, wenn die Anwendung geschlossen ist

applicaiton (didReceiveRemoteNotification: fetchCompletionHandler :)

Mein Handler in dieser Methode ist

 let userInfoDic = userInfo as NSDictionary as? [String: Any] 
     let cato = userInfoDic?["cato"] as? String 
if cato == "message" { 
      let state: UIApplicationState = UIApplication.shared.applicationState 
      if state == .active{ 
       print("Application is Active Socket IO will Handle This") 
      }else{ 
       let apnMessage = userInfoDic?["apnMessage"] as? [String: Any] 
       if (apnMessage == nil){ 
        print("Error Fetching Message") 
       }else{ 
       let count = UserDefaults.standard.integer(forKey:"TotalUnredMessage") 

        DispatchQueue.main.async { 
         UIApplication.shared.applicationIconBadgeNumber = count + 1 
        } 
        UserDefaults.standard.set(count, forKey: "TotalUnredMessage") 
      } 
} 

Also, was soll ich für diese Methoden ändern Selbst wenn die Anwendung geschlossen ist

Danke

Antwort

2

didReceiveRemoteNotification Methode wird nicht aufgerufen, wenn die Anwendung geschlossen wird.

Aber Sie können überprüfen launchOptions wissen Wetter die Anwendung von Benachrichtigung oder nicht in didFinishWithLaunchOptions Methode in AppDelegate ins Leben gerufen wurde, und Ihre Aufgabe tun entsprechend.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool { 

    if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil { 
    // Do your task here 
    } 

} 
+0

Was direkt, wenn der Benutzer geschieht das App-Symbol tippt und nicht durch Benachrichtigung kommen oder ich in der Lage sein, alle die Meldung sehen erhalten, wenn die Anwendung Danke für die Antwort –

+1

geschlossen wurde, wenn der Benutzer tut Wenn Sie die App nicht öffnen, indem Sie auf die Benachrichtigung tippen, können Sie die Benachrichtigungsinformationen nicht abrufen. In diesem Fall müssen Sie sich mit Ihrem Server nach ungelesenen Benachrichtigungen erkundigen. –

+0

Meine ganze Anforderung ist es, die Badge Anzahl erhöhen Ich versuchte, +1 in Badge Ich funktioniert nicht –

Verwandte Themen