Ich habe eine iOS-Anwendung, an die Push-Benachrichtigungen gesendet werden. Mein Problem ist, dass die Nachrichten / Benachrichtigungen im Benachrichtigungscenter in iOS verbleiben, nachdem sie getippt wurden. Wie kann ich beim nächsten Öffnen der Anwendung eine Benachrichtigung für meine Anwendung im Benachrichtigungscenter entfernen?
Ich bin auf Posts gestoßen, bei denen Leute setApplicationIconBadgeNumber
einen Nullwert aufrufen , um die Benachrichtigungen zu löschen. Das kommt mir sehr komisch vor, also glaube ich, dass es vielleicht eine andere Lösung gibt?
EDIT1:
Ich habe einige Probleme beim Löschen der Benachrichtigungen. Bitte sehen Sie meinen Code hier:
- (void) clearNotifications {
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (launchOptions != nil)
{
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{
NSLog(@"Launched from push notification: %@", dictionary);
[self clearNotifications];
}
}
return YES;
}
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
NSLog(@"Received notification: %@", userInfo);
[self clearNotifications];
}
Ich führe die App über Xcode aus. Wenn die App minimiert ist und ich die App mithilfe der Benachrichtigung im Benachrichtigungscenter starte, kann ich im Protokoll sehen, dass die App didReceiveRemoteNotification
aufgerufen wird und unter Verwendung von Haltepunkten, die ich sehen kann, dass die ausgeführt clearNotifications
wurde. Die Benachrichtigung bleibt jedoch im Benachrichtigungscenter hängen. Warum?
let center = UNUserNotificationCenter.current() center.removeAllDeliveredNotifications() // To remove all delivered notifications
stackoverflow.com/a/40397907/1155650Nur um die Antwort von pcperini zu erweitern. Wie er erwähnt, müssen Sie Ihrer
application:didFinishLaunchingWithOptions:
Methode den folgenden Code hinzufügen .Sie auch müssen Schritt dann das Abzeichen in Ihrer dekrementieren
application:didReceiveRemoteNotification:
Methode , wenn Sie versuchen , die Nachricht von der Nachrichtenzentrale zu löschen , so dass , wenn ein Benutzer eingibt Sie app aus einer Meldung das Nachrichtenzentrum drückt , wird auch klar, das heißt;quelle
Es kann auch sinnvoll sein, clearNotifications in applicationDidBecomeActive aufzurufen, damit die Benachrichtigungen auch gelöscht werden, falls sich die Anwendung im Hintergrund befindet und zurückkommt.
quelle
Update für iOS 10 (Swift 3)
Um alle lokalen Benachrichtigungen in iOS 10-Apps zu löschen, sollten Sie den folgenden Code verwenden:
Dieser Code behandelt das Löschen lokaler Benachrichtigungen für iOS 10.x und alle vorherigen Versionen von iOS. Sie müssen
import UserNotifications
für den iOS 10.x-Code.quelle
Wenn Sie geplante lokale Benachrichtigungen ausstehen und keine
cancelAllLocalNotifications
zum Löschen alter Benachrichtigungen im Benachrichtigungscenter verwenden möchten , können Sie auch Folgendes tun:Wenn Sie das festlegen
scheduledLocalNotifications
, werden die alten im Notification Center gelöscht, und wenn Sie es auf sich selbst setzen, behalten Sie die ausstehenden lokalen Benachrichtigungen bei.quelle
applicationDidBecomeActive:
undapplication:didReceiveLocalNotification:
Methoden.In Swift verwende ich den folgenden Code in meinem AppDelegate:
quelle
Wenn Sie hierher kommen und sich das Gegenteil fragen (wie ich), ist dieser Beitrag möglicherweise für Sie.
Ich konnte nicht herausfinden, warum meine Benachrichtigungen gelöscht wurden, als ich den Ausweis löschte ... Ich erhöhe den Ausweis manuell und möchte ihn dann löschen, wenn der Benutzer die App betritt. Dies ist jedoch kein Grund, das Benachrichtigungscenter zu räumen. Möglicherweise möchten sie diese Benachrichtigungen weiterhin sehen oder darauf reagieren.
Negativ 1 macht zum Glück den Trick:
quelle
Möglicherweise für den Fall, dass geplante Alarme und nicht gelöschte App-Symbolabzeichen vorliegen.
quelle
Wenn Sie zukünftige Benachrichtigungen wiederholt haben und diese Benachrichtigungen nicht abbrechen möchten, können Sie das Element im Benachrichtigungscenter löschen, indem Sie:
Sie können die Benachrichtigung nicht löschen, wenn Ihre App im Vordergrund geöffnet ist, indem Sie die folgende Methode unmittelbar nach Erhalt der lokalen Benachrichtigung aufrufen. Andernfalls erhalten Sie zehntausende Benachrichtigungen. Vielleicht, weil die gleiche Benachrichtigung erneut gilt und jetzt die Zeit zum Feuern ist. Sie behalten also das Feuer, bewerben sich erneut, feuern, bewerben sich ....:
quelle
Wenn Sie sich von Ihrer App abmelden, müssen Sie zu diesem Zeitpunkt eine der folgenden Codezeilen für die Klickmethode der Abmeldeschaltfläche verwenden.
und das funktioniert perfekt in meiner app.
quelle
Sie müssen den folgenden Code in Ihre AppDelegate-
applicationDidBecomeActive
Methode einfügen .quelle
Habe es von hier bekommen . Es funktioniert für iOS 9
quelle