Ich habe Remote-Benachrichtigungen erfolgreich für mein Messaging App einrichten und will die „Schnellantwort“ -Funktionalität von iOS, besser als UNTextInputNotificationAction
von UNUserNotificationCenter
jetzt bekannt zu integrieren.Schnellantwort: NSURLSessionDataTask von „userNotificationCenter: didReceiveNotificationResponse: withCompletionHandler:“
Ich habe die Texteingabefunktion zu meinen eingehenden Nachrichtenbenachrichtigungen hinzugefügt und es funktioniert wie erwartet.
Mein Problem liegt in der UNUserNotificationCenterDelegate
Funktion userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
.
Egal, wie ich die NSURLSessionDataTask
-POST
die Eingangsantwort userText
von UNTextInputNotificationResponse
einrichten, die Anfrage immer out-Zeiten. Es funktioniert gut, wenn ich auf eine Benachrichtigung "Schnell antworten" antworte, während die App im Vordergrund ist.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
if ([response isKindOfClass:UNTextInputNotificationResponse.class]) {
if ([response.actionIdentifier isEqualToString:@"REPLY_MESSAGE"]) {
[ApiManager chatWithId:@"123456789abcdefg" postTextMessage:[(UNTextInputNotificationResponse *)response userText] completion:^(Message *message) {
if (!message) {
NSLog(@"Sending failed");
}
completionHandler();
}];
}
}
}
The Data Aufgabe im ApiManager
befindet sich auf einem [NSURLSession sharedSession]
gebaut - Beachten Sie, dass dies nicht funktioniert hat, auch nachdem er zu backgroundSessionConfigurationWithIdentifier:
und Umsetzung der benötigten Delegierten Methoden zu ändern.
Das Protokoll "Senden fehlgeschlagen" kann über die Konsole angezeigt werden, wenn ich den Fehler der DataTask überprüfen, zeigt es einen "Timeout" -Fehler.
Ich vermute, ich habe etwas falsch mit meinem Hintergrund Netzwerk, aber ich kann nicht meinen Kopf darum herum, und nirgendwo ich sah, war eine Antwort zu finden. Die Dokumentation ist auch hier sehr spärlich.
Es ist seltsam, dass Sie einen Timeout-Fehler erhalten. In der Vergangenheit, als ich versuchte, DataTasks aus dem Hintergrund zu starten, erhalte ich eine Fehlermeldung, dass nur Upload- und Download-Aufgaben im Hintergrund ausgeführt werden dürfen, aber keine Datentasks. Versuchen Sie, Ihre Datenaufgabe in eine Upload-Aufgabe zu ändern, und prüfen Sie, ob es Änderungen gibt. –
@John Wickham: Ich habe es mit einer Hintergrundsitzung und einer Uploadaufgabe versucht. Keine funktionierte. Ich bekomme trotzdem immer die Zeitüberschreitung. – Maurice
Das ist sehr interessant. Wie lange dauert es, bis Sie den Timeout-Fehler erhalten? Ich glaube, das Standard-Timeout-Intervall beträgt 60 Sekunden. –