Fix missing notifications.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent fc7dec04aa
commit 5fd93eace0

@ -14,6 +14,7 @@
#import <SignalServiceKit/TSErrorMessage.h> #import <SignalServiceKit/TSErrorMessage.h>
#import <SignalServiceKit/TSIncomingMessage.h> #import <SignalServiceKit/TSIncomingMessage.h>
#import <SignalServiceKit/TextSecureKitEnv.h> #import <SignalServiceKit/TextSecureKitEnv.h>
#import <SignalServiceKit/Threading.h>
@interface NotificationsManager () @interface NotificationsManager ()
@ -215,11 +216,11 @@
- (void)presentNotification:(UILocalNotification *)notification identifier:(NSString *)identifier - (void)presentNotification:(UILocalNotification *)notification identifier:(NSString *)identifier
{ {
dispatch_async(dispatch_get_main_queue(), ^{ DispatchMainThreadSafe(^{
// Replace any existing notification // Replace any existing notification
// e.g. when an "Incoming Call" notification gets replaced with a "Missed Call" notification. // e.g. when an "Incoming Call" notification gets replaced with a "Missed Call" notification.
if (self.currentNotifications[identifier]) { if (self.currentNotifications[identifier]) {
[self cancelNotificationWithIdentifierMainThread:identifier]; [self cancelNotificationWithIdentifier:identifier];
} }
[[UIApplication sharedApplication] scheduleLocalNotification:notification]; [[UIApplication sharedApplication] scheduleLocalNotification:notification];
@ -231,23 +232,17 @@
- (void)cancelNotificationWithIdentifier:(NSString *)identifier - (void)cancelNotificationWithIdentifier:(NSString *)identifier
{ {
dispatch_async(dispatch_get_main_queue(), ^{ DispatchMainThreadSafe(^{
[self cancelNotificationWithIdentifierMainThread:identifier]; UILocalNotification *notification = self.currentNotifications[identifier];
}); if (!notification) {
} DDLogWarn(
@"%@ Couldn't cancel notification because none was found with identifier: %@", self.tag, identifier);
- (void)cancelNotificationWithIdentifierMainThread:(NSString *)identifier return;
{ }
OWSAssert([NSThread isMainThread]); [self.currentNotifications removeObjectForKey:identifier];
UILocalNotification *notification = self.currentNotifications[identifier];
if (!notification) {
DDLogWarn(@"%@ Couldn't cancel notification because none was found with identifier: %@", self.tag, identifier);
return;
}
[self.currentNotifications removeObjectForKey:identifier];
[[UIApplication sharedApplication] cancelLocalNotification:notification]; [[UIApplication sharedApplication] cancelLocalNotification:notification];
});
} }
#pragma mark - Logging #pragma mark - Logging

Loading…
Cancel
Save