Расписание количество локальных уведомлений - PullRequest
11 голосов
/ 11 октября 2011

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

Но в iOS мы не можем запланировать более 64 уведомлений одновременно.Но у меня есть ряд записей даты и времени в базе данных.Как я могу запланировать более 64 уведомлений?

Ответы [ 6 ]

15 голосов
/ 11 октября 2011

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

Один из способов убедиться, что все уведомления запланированы, - это сначала запланировать первые 64 уведомления, а затем регулярноинтервалы времени (могут быть при каждом запуске приложения или при каждом срабатывании уведомления) проверяют количество запланированных уведомлений и, если количество уведомлений меньше 64 , скажем n уведомленийзатем запланируйте следующие (64 - n) уведомлений.

int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
int x = 64 - n;
// Schedule the next 'x' notifications
4 голосов
/ 02 июля 2014

Я создал приложение с локальными уведомлениями, и в этом случае пользователь получал уведомления каждые 20/40/60 минут в заданный интервал времени (например, 8: 00-20: 00).Решением было создать до 64 уведомлений в течение всего дня и установить repeatInterval для UILocalNotification в NSCalendarUnitDay.Конечно, если вам нужно использовать более сложный шаблон уведомлений, это не тот путь.

Также стоит отметить, что с iOS7 мне пришлось, из-за требований клиента, реализовать перепланирование уведомлений в фоновом режимеобновление приложения.

4 голосов
/ 11 октября 2011

Основное решение этой проблемы - использование repeatInterval для уведомлений, поступающих через определенные промежутки времени. Это уменьшит количество избыточных уведомлений. Но все же, если число превышает 64, вы можете использовать одну стратегию для использования словаря userInfo, передавать время и сообщение следующего уведомления и планировать его при вызове метода - (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification. Это может быть немного сложно, поэтому вы должны быть осторожны, чтобы правильные данные передавались в словарь userInfo и уведомления были установлены точно. Надеюсь, это поможет.

3 голосов
/ 05 декабря 2011

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

Не понимаю, почему в Apple реализация уведомлений ооочень хромая. Если кто-нибудь может найти лучший способ, дайте мне знать.

0 голосов
/ 11 июля 2017

Apple Doc говорит:

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

0 голосов
/ 04 апреля 2016

Я нашел эту библиотеку Swift, которая делает почти то же самое, что мы ищем. Я собираюсь попробовать это и подтвердит, как это работает:

https://github.com/ahmedabadie/ABNScheduler

...