2017-01-25 4 views
1

Mit dem TwilioChatClient-Pod habe ich meine App erfolgreich bei Twilio Programmable Chat registriert, um APN-Benachrichtigungen zu erhalten.iOS Swift Twilio Programmierbare Chat-Push-Benachrichtigungen

Wie ich jedoch feststellen kann, werden diese Benachrichtigungen nach dem Aufruf von client.register(withToken: deviceToken) auf einem instanziierten TwilioChatClient-Client erstellt, und NICHT durch die AppDelegate didReceiveRemoteNotification-Methode der Anwendung. Fremder noch, didReceiveRemoteNotification wird aufgerufen, aber nur, wenn die Anwendung im aktiven Zustand ist, und nicht im Hintergrund, wo ich einige Operationen ausführen möchte.

Weiß jemand, wo und wie diese Benachrichtigungen erstellt werden, oder warum didReceiveRemoteNotification nur während des aktiven Zustands aufgerufen wird? Unter anderem möchte ich die Anwendungssymbol-Ausweisnummer mit jeder Benachrichtigung, die vom Client gesendet wird, erhöhen.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    print("Registered for notifications"); 
    if UserUtils.client?.userInfo != nil { 
     print("Has info"); 
     UserUtils.deviceToken = deviceToken; 
     UserUtils.client?.register(withToken: deviceToken) 
    } else { 
     print("No info"); 
     updatedPushToken = deviceToken as NSData? 
    } 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    print("Received a notification"); 
    if UIApplication.shared.applicationState != .active { 
     print(userInfo); 
     UserUtils.client?.handleNotification(userInfo); 
     UIApplication.shared.applicationIconBadgeNumber += 1; 
     if UserUtils.client?.userInfo != nil { 
      print(userInfo); 
      let jsonNotification = JSON(userInfo["aps"]) 
      let alert = jsonNotification["alert"].stringValue + "\"}"; 
      print(JSON.init(parseJSON: alert)["body"]); 
     } else { 
      print(userInfo); 
      let jsonNotification = JSON(userInfo["aps"]) 
      let alert = jsonNotification["alert"].stringValue + "\"}"; 
      print(JSON.init(parseJSON: alert)["body"]); 
     } 
    } else { 
    } 
} 

wo die client.register(withToken: deviceToken) wie vorgesehen funktioniert.

+0

Bitte fügen Sie Ihre Code-Snippets – muescha

+0

welche der 'didReceiveRemoteNotification' Methoden die Sie verwenden? Sie verwenden diese [Anwendung (_: didReceiveRemoteNotification: fetchCompletionHandler:)] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application)? – muescha

+0

@muescha, ich benutze die Methode, die den fetchCompletionHandler enthält - aber ich habe beide Methoden ausprobiert, und keiner von ihnen funktioniert für mich. Ich werde jetzt meine Code-Snippets posten! –

Antwort

0

Twilio Entwickler Evangelist hier.

Ich habe mit dem programmierbaren Chat-Team gesprochen und das ist, was ich herausgefunden haben:

  • application(_:didReceiveRemoteNotification:fetchCompletionHandler:) ist für stille Benachrichtigungen im Hintergrund, die nur Hintergrundverarbeitung durchführen (das heißt, mit "content-available": 1 Satz in die APNS-Benachrichtigung). Programmable Chat sendet Benachrichtigungen, die Informationen an den Benutzer zeigen, so dass es nicht im Hintergrundmodus
  • Benachrichtigungen ausgelöst werden kann, aktualisieren Sie die Badge Anzahl für Sie zwar, so dass diese Verarbeitung Sie nicht tun müssen, erfordert dies eine andere Einstellung in der Benachrichtigung, die wir derzeit nicht unterstützen, jedoch wird jetzt daran gearbeitet, diese Unterstützung hinzuzufügen
  • Wenn Sie sowohl eine Benachrichtigung anzeigen als auch weitere Hintergrundverarbeitung durchführen möchten, wird dies in normalen Benachrichtigungen nicht unterstützt, dies wird jedoch unterstützt mit iOS 10 service extensions. Programmierbare Chat unterstützt nicht von denjenigen abweichen, aber wieder, es wird gearbeitet, so können Sie sehen, dass bald

Halten Sie ein Auge auf dem Programmable Chat Changelog für diese Ergänzungen.

Lassen Sie mich wissen, ob das überhaupt hilft.

Verwandte Themen