обрабатывать несколько 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:

  • Скомпилируйте большие исходные файлы (10k + lines) в Xcode 4.x
  • Отправка приложения iOS с использованием бета-версии xcode?
  • Facebook iOS SDK: получение номера телефона пользователя и страны
  • в проекте xcode с использованием .a файлов с быстрым файлом 'map' erorr не найден
  • Рекомендации по созданию таблицы с динамическими данными в IOS
  • Преобразование hex в base64 в Objective C?
  • Как добавить календарь по умолчанию в программном обеспечении iphone SDK
  • Два приложения, одна кодовая база. Как я могу это достичь?
  • Пользовательский шрифт в симуляторе Apple Watch не показывает
  • Есть ли риск обновления до Xcode 9 во время работы над проектами, которые будут выпущены в ближайшее время?
  • Ошибка Xcode 5 ITMS-9000 Недопустимый профиль подготовки
  • Interesting Posts

    Как остановить выполнение задач в очереди отправки?

    Расстояние между ячейками в UICollectionView

    branch.io перенаправляет на пустой контент в приложении, если приложение не работает в фоновом режиме

    Как проверить, существует ли BOOL в пользовательских настройках NSUserDefaults?

    Как сделать копию для UILabel?

    Firebase Swift: queryEqualToValue byKeyKey не работает

    Строка состояния, некорректно заданная с помощью UINavigationController

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

    Создание файла .sqlite из хранилища Core Data?

    Объявление свойства в Objective-C

    Преимущества использования Core Graphics

    addChildViewController дает ошибку NSException?

    значок приложения iOS с прозрачным фоном, отображающий черный фон на устройстве

    Войдите в систему с помощью facebook в непризнанном селекторе ios6, отправленном в экземпляр "

    Основные данные для предварительно загруженной информации

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.