2017-01-13 6 views
0

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

var trigger = UNTimeIntervalNotificationTrigger.CreateTrigger(60 * 30, true); 

Однако, я хотел бы остановить эти уведомления через определенное время, скажем, 9.00. Как мне это сделать?

ответ

0

Есть 3 варианта удаления локальных уведомлений.

1. Когда приложение находится на переднем плане: - Если приложение находится на переднем плане, проверьте время локального устройства и удалите все ожидающие локальные уведомления.

UNUserNotificationCenter.Current.RemoveAllPendingNotificationRequests(); 

2. Если приложение в фоновом режиме: Вы не можете выполнить код в определенное время, когда приложение находится в фоновом режиме. Существует два подхода к удалению локального уведомления в определенное время. Тем не менее, именно ОС решила, должны ли методы обратного вызова вызывать или нет, в зависимости от доступных ресурсов, процент заряда батареи, устройство заряжается и т. Д.

a. Фоновая выборка - Включить возможность фоновой выборки, которая вызовет метод обратного вызова после определенного времени, когда устройство находится в фоновом режиме. Опять же, ОС решит, когда звонить в зависимости от использования приложения.

//Fetch interval 
UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval(UIApplication.BackgroundFetchIntervalMinimum); 


//Call back method 
    public override void PerformFetch(UIApplication application, Action<UIBackgroundFetchResult> completionHandler) 
     { 
      // Code of removing local notifications 
     } 

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

Смежные вопросы