Как удалить все локальные уведомления при удалении приложения с iPhone

Допустим, я установил 5 локальных уведомлений для приложения iPhone, затем пользователь удаляет приложение. Если приложение установлено снова, оно показывает предыдущие уведомления.

Я знаю, что следующий код удаляет все уведомления

[[UIApplication sharedApplication] cancelAllLocalNotifications];

Но где мне поместить этот код, чтобы он выполнялся при удалении приложения?

Или любой другой способ решить эту проблему.

29
задан Brad Thomas 7 April 2016 в 17:35
поделиться

3 ответа

Как уже упоминали другие, я думаю, что лучший способ сделать это - иметь флаг в didFinishLaunchingWithOptions в делегате приложения, который проверяет, является ли это первым запуском или нет.

Если приложение запускается в первый раз, вы можете позвонить

[[UIApplication sharedApplication] cancelAllLocalNotifications];

. Это приведет к отмене любых существующих уведомлений.

Например:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // this flag will need to be stored somewhere non-volatile such as using CoreData 
    // or user defaults
    if(flag == nil || [flag count] ==0){ 

       [[UIApplication sharedApplication] cancelAllLocalNotifications];

       // update your flag so that it fails this check on any subsequent launches
       flag = 1;
    }
{
31
ответ дан 28 November 2019 в 02:01
поделиться

Для Swift 3.0 вы можете использовать

if (isFirstLaunch){  
  UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
}

Затем добавьте этот метод, чтобы проверить, является ли это первым запуском

var isFirstLaunch: Bool {
    get {
        if     (NSUserDefaults.standardUserDefaults().objectForKey("firstLaunchDate") == nil) {
            NSUserDefaults.standardUserDefaults().setObject(NSDate(),     forKey: "firstLaunchDate")
            NSUserDefaults.standardUserDefaults().synchronize()
            return true
        }
        return false
    }
}
3
ответ дан 28 November 2019 в 02:01
поделиться

Зайдите в приложение appDelegate.m, в функцию «didFinishLaunchingWithOptions» добавьте этот код:

application.applicationIconBadgeNumber = 0;
-7
ответ дан 28 November 2019 в 02:01
поделиться