Можно ли обрабатывать уведомления, пока устройство заблокировано? - PullRequest
0 голосов
/ 09 марта 2019

Я давно работаю с уведомлениями, и я мог бы поклясться, что userNotificationCenter(_:didReceive:withCompletionHandler:) раньше обрабатывался, только если приложение было открыто с помощью уведомления.

Однако, просмотрев активных уведомлений , я нашел это:

Когда пользователь выбирает действие, система запускает ваше приложение в фоновом режиме и уведомляет общий объект UNUserNotificationCenter, который уведомляет своего делегата. Используйте метод userNotificationCenter(_:didReceive:withCompletionHandler:) вашего объекта-делегата, чтобы идентифицировать выбранное действие и предоставить соответствующий ответ.

Значит ли это, что, казалось бы, универсальный метод делегата didReceive теперь работает, даже когда устройство заблокировано?

Или приложение всегда должно быть открыто, чтобы действительно что-то значимое реагировать на действия по уведомлению (запись в локальную базу данных, отправка HTTPS-запросов и т. Д.)?

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Из этого метода делегата: userNotificationCenter(_:didReceive:withCompletionHandler:) уведомление работает, когда ваше устройство заблокировано, но если вы хотите выполнить какое-либо действие.

Например: предположим, что с помощью уведомления вы хотите выбрать любой телефонный звонок в приложении, а затем настроить другие вещи. Вы должны настроить PushKit Framework в своем приложении. Как показано на изображениях: enter image description here

You have to create the different cerificate as well for PushKit Framework

0 голосов
/ 09 марта 2019

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

Важно

Если ваш ответ на действие предполагает доступ к файлам на диске, рассмотрите другой подход,Пользователи могут реагировать на действия, пока устройство заблокировано, что делает файлы зашифрованными с полной опцией, недоступной для вашего приложения.Если это произойдет, вам может понадобиться временно сохранить изменения и позже интегрировать их в структуры данных вашего приложения.

...