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.
Bitte fügen Sie Ihre Code-Snippets – muescha
welche der 'didReceiveRemoteNotification' Methoden die Sie verwenden? Sie verwenden diese [Anwendung (_: didReceiveRemoteNotification: fetchCompletionHandler:)] (https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application)? – muescha
@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! –