обрабатывать несколько UILocalnotification больше, чем 64

объясните используя код пожалуйста! Возможно, это будет публиковать этот вопрос. Управляйте несколькими UILocal Notification. Но не получите ответа? Пожалуйста, сосредоточьтесь на этом вопросе и anser. Как я могу управлять уведомлением более 64?

У меня есть локальная база данных всего времени UINotification например, следующий вопрос:

Множество UILocalNotification

Ответьте, пожалуйста.

4 Solutions collect form web for “обрабатывать несколько UILocalnotification больше, чем 64”

Невозможно запланировать более 64 локальных уведомлений в любой момент времени. Однако могут быть способы эффективного достижения того, что вам нужно.

  1. Если вы повторяете уведомления, не планируйте их вручную. Вместо этого используйте repeatInterval в объекте UILocalNotification . Это свойство принимает NSCalendarUnit который может использоваться для установки повторения почасовой, дневной, месячной и т. Д.
  2. Каждый раз, когда приложение запускается, переоценивайте запланированные объекты UILocalNotification . Отбросьте те, которые больше не действительны, и поставите в очередь как можно больше, которые будут в будущем.
  3. Это наименее элегантное решение, но потенциально лучшее для установки большого количества напоминаний для пользователя. Однако обратите внимание, прежде чем пытаться этот метод, вы фактически не собираетесь регистрировать дополнительные объекты UILocalNotification и поэтому ваш пользователь не будет отправлен в приложение, когда будет отображаться уведомление. Поэтому с этой целью вы можете использовать события календаря и напоминания для установки напоминаний для пользователя. Вы хотите использовать фреймворк EventKit для обработки всего тяжелого подъема. Преимущество этого метода заключается в том, что вы планируете планировать столько событий, сколько хотите. И вы можете использовать календарь в качестве резервного хранилища для своих уведомлений. Поэтому каждый раз, когда приложение запускается, вы запрашиваете EKEventStore с использованием одного из предикатных методов (например, - (NSArray *)eventsMatchingPredicate:(NSPredicate *)predicate ), чтобы найти созданные вами события.

Возможно, есть другие способы управления UILocalNotification . В соответствии с яблоком вы можете установить максимум 64 уведомления. поэтому для управления более чем 64 уведомлениями вы можете реализовать ниже логики.

Прежде всего зарегистрируйте первые 64 локальных оповещения. при каждом запуске приложения или didBecomeActive получите оставшиеся уведомления или счет, используя [[UIApplication sharedApplication]scheduledLocalNotifications] . поэтому, если ваш счетчик <64, то скажите его 30. так что добавьте новые 34 уведомления, и теперь ваше общее уведомление будет 64. сделайте это каждый запуск, чтобы он работал в соответствии с вашими потребностями.

Может быть, это поможет вам.

Попробуйте это, вы можете изменить интервал, выбрав setDay , setMonth , ….:

 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:3]; NSDate *date3Days = [calendar dateByAddingComponents:components toDate:[NSDate date] options:0]; UIApplication* app = [UIApplication sharedApplication]; NSArray* oldNotifications = [app scheduledLocalNotifications]; if ( oldNotifications ) { [app cancelAllLocalNotifications]; app.applicationIconBadgeNumber = 0; } UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init]; if (notifyAlarm) { notifyAlarm.fireDate = date3Days; notifyAlarm.timeZone = [NSTimeZone defaultTimeZone]; notifyAlarm.alertBody = NSLocalizedString( @"Push message", @""); notifyAlarm.soundName = @"sound.wav"; [app scheduleLocalNotification:notifyAlarm]; } 

Если вы хотите установить определенное время, после которого должны появиться UILocalNotifications вы можете создать метод вышеупомянутого решения и создать цикл над массивом, который указывает дни, когда вам нравится показывать уведомление:

 NSArray *arrayNumbers = @[@5, @7, @14, @21, @30, @60, @90, @120]; NSDictionary *dictNotifications = [[NSUserDefaults standardUserDefaults] objectForKey:kUserDefAppStarts]; for ( NSNumber *bla in arrayNumbers ){ NSString *strKey = [NSString stringWithFormat:@"%@%@", kUserDefAppStarts, bla]; NSDictionary *dict = dictNotifications[strKey]; NSString *strMessageQuestion = dict[kKeyMessage]; [self createNotificationWithNumberOfDays:[bla integerValue] andMessage:strMessageQuestion userInfo:dict]; } 

И вот метод, который вы должны вызвать

 + (void)createNotificationWithNumberOfDays:(int)days andMessage:(NSString *)message userInfo:(NSDictionary *)dict{ NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; [components setDay:days]; NSDate *dateAlert = [gregorian dateByAddingComponents:components toDate:[NSDate date] options:0]; UIApplication *app = [UIApplication sharedApplication]; UILocalNotification *notifyAlarm = [[UILocalNotification alloc] init]; if( notifyAlarm ){ [notifyAlarm setFireDate:dateAlert]; [notifyAlarm setTimeZone:[NSTimeZone defaultTimeZone]]; [notifyAlarm setSoundName:@"soundname"]; [notifyAlarm setAlertBody:message]; [notifyAlarm setUserInfo:dict]; [app scheduleLocalNotification:notifyAlarm]; } 

}

Начиная с iOS7 Вы можете использовать фоновое обновление приложения, чтобы также планировать локальные уведомления. При каждом вызове обновления вы можете проверить свою базу данных для ближайших (будущих) уведомлений и запланировать их так же, как в своем приложении. Мы использовали этот подход в одном из наших приложений, и Apple, похоже, не испытывает никаких проблем с ним. Также обратите внимание, что пользователь может отключить его, поэтому вы должны убедить своего пользователя, что вы не будете разряжать батарею 🙂

Вы можете получить дополнительную информацию от docs: Что нового в iOS7

и здесь: application: performFetchWithCompletionHandler:

  • Отключение диспетчера модальных представлений из делегата приложения
  • Развертывание бета-версии Crashlytics с помощью программы Xcode Bot
  • Как изменить заголовок аннотации на Apple Maps Route
  • Как я могу жить как открытая книга в iBook?
  • Установить цвет фона UIDatePicker в Interface Builder?
  • XCode Warning: использование 'stringWithString': с литералом является избыточным
  • Что означает «построитель событий XCode 4.2» «Определяет контекст» и «Обеспечить контекст»?
  • XCode 8.0 Swift 3.0 медленная индексация и построение
  • Как увидеть NSLog () из консольного приложения при использовании инструментов
  • Как отправить данные из приложения iOS на HTTP-сервер
  • Дублировать файлы в Xcode-менеджере?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.