2016-05-14 24 views
0

Ich habe einen seltsamen Fall. Meine schnelle ios App ist mit Cloudkit verbunden. Wenn die App NICHT läuft (Hintergrundstatus), erhalte ich immer mein Benachrichtigungs-Badge und warne immer gut! Wenn die App läuft, werden keine Benachrichtigungen empfangen! Ich weiß, dass es die Fernbedienung nicht schlägt, weil ich das tue: 1. Hinzufügen eines Haltepunktes zum didReceiveRemoteNotification Ereignis 2. Ausführen von xcode in einem gestöpselten iphone 3. NSLog ("detected didReceiveRemoteNotification"), so dass der endgültige Code so aussiehtdidReceiveRemoteNotification wird nicht ausgeführt, wenn App ausgeführt wird (FOREGROUND)

Ich weiß, dass der Fehler nicht von cloudkit oder von APNS kommt, weil ich Alert Banner und Abzeichen erhalten, wenn das Telefon im Hintergrundzustand ist.

Können Sie mir helfen, das für den Vordergrundzustand richtig einzustellen?

I ios v9.3

UPDATE # 1 Ich betreibe denke, die Formulierung der Dokumentation schlecht ist. Es sagt klar, dass beide im Vordergrund laufen, was mir wichtig ist; Trotzdem ist die Korrektur genauer als die Dokumentation!

Im Gegensatz zur Anwendung: didReceiveRemoteNotification: Methode, die nur dann, wenn Ihre Anwendung aufgerufen wird, wird im Vordergrund ausgeführt wird, das System diese Methode aufruft, wenn Ihre App im Vordergrund oder Hintergrund ausgeführt wird.

Antwort

4

Sie haben die falsche Methode implementiert. Umsetzung:

func application(_ application: UIApplication, 
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject], 
    fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 

Wie die Dokumentation erklären:

Im Gegensatz zur application:didReceiveRemoteNotification: Methode, ... das System ruft diese Methode, wenn Ihre App im Vordergrund oder im Hintergrund ausgeführt wird.

Verwandte Themen