Вопрос по objective-c, xcode, ios – Огонь локальное уведомление каждый день в разное время

3

Я разрабатываю проект, который каждый день уведомляет пользователя о времени, отличном от заданной базы данных, если быть точным, пять раз в день.

Моя проблема в том, как планировать все это время,5times*365days = 1825 даты пожара !! можно ли запланировать их все?

любые идеи будут очень цениться

Как вы будете обрабатывать локальные уведомления в фоновом режиме? Есть идеи? ilhnctn

Ваш Ответ

2   ответа
13

Приложение может иметь только ограниченное количество запланированных уведомлений; система хранит самые быстрые 64 уведомления об отправке (с автоматически перепланированными уведомлениями, считающимися как одно уведомление) и отбрасывает остальны

Я решил эту проблему, установив «очередь» уведомлений. Например, в моем приложении есть три разных типа уведомлений, скажем, типа A, B и C.

Я планирую уведомления A, B и C на следующий месяц, каждый раз, когда пользователь открывает приложение, я проверял, сколько осталось уведомлений. Если, например, больше нет уведомлений A, приложение планирует больше уведомлений A и т.

Как мне этого добиться?

Каждый раз, когда я планирую уведомление, я используюuserInfo свойство. Я установил словарь с ключомtype и значение.

В моем делегате приложения я проверяю все ожидающие уведомления и подсчитываю, сколько осталось для каждого типа. Код выглядит так:

NSArray *scheduledNotifications = [UIApplication scheduledLocalNotifications];

NSUInteger AType, BType, CType;

for (UILocalNotification *notif in scheduledNotifications) {
        //Classify notifications by type
        NSUInteger notifType = [[notif.userInfo objectForKey:@"type"]integerValue];
        if (notifType == 0) {
           AType++;
        }else if(notifType == 1){
            BType++;
        }else{
            CType++;
        }

}

Если счет любого типа равен нулю, приложение планирует больше уведомлений.

Наконец, если уведомления показываются, например, каждый день в одно и то же время вы можете использоватьrepeatInterval свойствоН вы не можете создавать свои собственные повторяющиеся интервалы, вы можете использовать только повторяющиеся интервалы, определенные вNSCalendarUnit.

Надеюсь, это поможет

Да, я использовал нечто подобное - создайте очередь или упорядоченный список ожидающих уведомлений и просмотрите его при открытии приложения и т. Д. (Пере) запланируйте уведомления в порядке дат. Фактически, с этой схемой вам действительно нужно только одно уведомление, ожидающее выдачи, поскольку его «значение» записывается в вашу очередь (хотя хорошо запланировать несколько уведомлений так, чтобы «уведомление пришло» и количество номеров значков более или менее соответствовало ожиданиям, когда приложение не работает). Hot Licks
Да, я обнаружил, что NSCalendarUnit немного сложнее, поэтому я рекомендую вам установить некоторые уведомления и посмотреть, как они работают. Ча, отметив дату моего iPhone, помогите мне узнать, как использовать repeatingInterval, поэтому я призываю вас сделать это. Также важно упомянуть, что уведомление с repeatatingInterval считается ОДНЫМ уведомлением. :) Edu
Прости за это,carNotificationsDic не нужен, это часть моего кода, но здесь не обязательно.scheduledNotifications этоUIApplicationобственность Edu
Я не понимаю этот код.carNotificationsDic не используется иscheduledNotifications не определено. Почему вы должны отделить тип A, B, C вместо сортировки по дате? PiTheNumber
@ Edu Это мне очень помогло, пришло мне в голову, но я не знал, как этого добиться, но так как я собираюсь планировать целый год, планируя набор уведомлений <64 каждый раз, когда пользователь отклоняет приложение от курса после если нет ожидающих уведомлений, эти 1825 будут повторяться точно так же в следующем году, поэтому, если я установлю свойство repeatInterval в kCFCalendarUnitYear, мне не придется планировать больше уведомлений в следующем году, верно? 4mahmoud
1

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

1) У него нет ограничений на количество уведомлений, таких как UILocalNotification.

2) С помощью набора событий вы можете добавлять события как на основе времени, так и на основе местоположения.

3) Вам тоже не нужно беспокоиться о конфиденциальности.

Хотя UILocalNotification и EventKit по-своему мощны ..

Обратите внимание: ios 6 или выше для EventKit Framework

Вам решать, какой из них зависит от ваших потребностей.

Ниже ссылки дадут вам хороший старт

Ресурс 1

Ресурс 2.

На изображении ниже вы сможете увидеть, что такое Evenkit.

Используйте EventKit, если он вам нужен.

Похожие вопросы