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

Могу ли я использовать PushKit для регулярного нажатия с использованием VoIP? Позволит ли запущенное приложение запускаться в фоновом режиме, если пользователь не действует при уведомлении?

В PushKit упоминается, что мы можем использовать обычный push или VoIP push. Но я не нашел никакой документации для использования PKPushType для регулярного нажатия. Кто-нибудь пробовал регулярный толчок с помощью PushKit? Если я не использую VoIP, возможно, что убитое приложение будет запущено в фоновом режиме, если оно получит push-уведомление? Смысл, если приложение будет убито, а уведомление приходит и пользователь не действует на него, может приложение будет запущена прошивкой в ​​фоновом режиме, если я использую PushKit?

4b9b3361

Ответ 1

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

Если вы используете PushKit, он действительно запускает приложение, когда уведомление получено, даже если оно было принудительно убито пользователем. См. этот ответ. Я бы добавил, что для достижения этого эффекта вам, вероятно, понадобится функция Voice Over IP.

Ответ 2

Еще один важный момент необходимо отметить из документации:

В отличие от пользовательских уведомлений, которые поддерживаются платформой UserNotifications, уведомления PushKit никогда не представляются пользователю - они не представляют значки, предупреждения или звуки.

Ответ 3

Изменить: этот ответ больше недействителен.


Да, вы можете, Apple Document

Структура PushKit предоставляет классы для ваших приложений для iOS. получать нажатия от удаленных серверов. Толкатели могут быть одного из двух типов: стандарт и VoIP. Стандартные нажатия могут доставлять уведомления так же, как в предыдущих версиях iOS.

Ответ 4

Начиная с iOS 13.0, это больше не разрешено. Apple закроет приложение, если не представит CallKit до завершения didReceiveIncomingPush(withPayload:).

Сотрудник Apple ответил на аналогичный вопрос в этой теме и сказал следующее:

В iOS 13.0 и более поздних версиях о входящих вызовах Voice over IP необходимо сообщать, когда они получены, и до того, как метод didReceiceIncomingPush() завершит выполнение, используя платформу CallKit, или система завершит работу вашего приложения.

Неудачный отчет о вызовах может помешать вашему приложению получать больше уведомлений о входящих вызовах.

По сути, вы больше не можете использовать push-уведомления VoIP для обмена сообщениями, отличными от VoIP, и для этого вам нужно будет использовать обычные push-уведомления.

Об этом было объявлено во время сессии WWDC "Достижения в фоновом исполнении приложений" https://developer.apple.com/videos/play/wwdc2019/707/

Так что, к сожалению, больше нет. Нам придется использовать обычную структуру UINotification для "стандартных" push-сообщений.