Подтвердить что ты не робот

Номер расписания локальных уведомлений

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

int n = [[[UIApplication sharedApplication] scheduledLocalNotifications] count];
int x = 64 - n;
// Schedule the next 'x' notifications

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

https://github.com/ahmedabadie/ABNScheduler

Ответ 6

Apple Doc говорит:

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