В PushKit упоминается, что мы можем использовать обычный push или VoIP push. Но я не нашел никакой документации для использования PKPushType для регулярного нажатия. Кто-нибудь пробовал регулярный толчок с помощью PushKit? Если я не использую VoIP, возможно, что убитое приложение будет запущено в фоновом режиме, если оно получит push-уведомление? Смысл, если приложение будет убито, а уведомление приходит и пользователь не действует на него, может приложение будет запущена прошивкой в фоновом режиме, если я использую PushKit?
Могу ли я использовать PushKit для регулярного нажатия с использованием VoIP? Позволит ли запущенное приложение запускаться в фоновом режиме, если пользователь не действует при уведомлении?
Ответ 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-сообщений.