UILocalNotification срабатывает после переустановки приложения - PullRequest
6 голосов
/ 07 февраля 2011

В моем приложении есть функция будильника, использующая UILocalNotification, и она прекрасно работает.Однако, если пользователь удаляет приложение, а затем УСТАНОВЛЯЕТ его, он сразу получает все промежуточные уведомления.

Я попытался позвонить:

[[UIApplication sharedApplication] cancelAllLocalNotifications];

, еслипервый раз, когда приложение запускается, но это не помогает, потому что уведомление получено еще до вызова приложения:удалил приложение, но, по крайней мере, эта ошибка была исправлена ​​Apple в более позднем выпуске.Однако сейчас я застрял с этим.У кого-нибудь есть идея?

Ответы [ 2 ]

15 голосов
/ 25 февраля 2013

По словам Apple, это не ошибка (я подал отчет об ошибке).Система сохраняет UILocalNotifications для удаленных приложений в течение 24 часов на случай, если пользователь удалил приложение случайно, и восстанавливает указанные UILocalNotifications, если приложение переустанавливается в течение этого периода времени.

Решение будет заключаться в том, чтобыудалите все UILocalNotifications при первом запуске, например, так:

- (BOOL)          application: (UIApplication*) application
didFinishLaunchingWithOptions: (NSDictionary*)  launchOptions
{
  if (self.isFirstRun)
  {
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
    self.firstRun = NO;
  }

  /* Other code here */
  ...
}

, конечно, реализуйте свой собственный firstRun установщик и получатель для извлечения / сохранения в постоянном хранилище, например NSUserDefaults.

6 голосов
/ 07 февраля 2011

На самом деле это ошибка в iPhone.Если вы удалили приложение и установите его позже, оно будет иметь тот же идентификатор приложения, поэтому при переустановке приложения все прошлые локальные уведомления запускались, даже если вы не открывали приложение.

...