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/1155650