Уведомления CloudKit не принимаются на устройстве iOS - PullRequest
1 голос
/ 12 февраля 2020

У меня есть приложение в App Store, которое работает с CloudKit, и удаленные уведомления там работают очень хорошо. Если пользователь изменяет запись, он запускает уведомление pu sh на своих других устройствах, и вызывается AppDelegate didReceiveRemoteNotification.

В среде разработчиков я добавил несколько новых сущностей, но в моем тестировании уведомления pu sh больше не принимаются. В основном didReceiveRemoteNotification не вызывается вообще.

Некоторые важные замечания:

  • это не работает только на iOS ... в моем приложении Ma c, указывая на тот же контейнер CloudKit, удаленные уведомления принимаются правильно, так что это никак не связано с тем, как подписка CloudKit создается или изменяется (в любом случае я ничего не изменил в этом отношении)

  • Я звоню registerForRemoteNotifications как и раньше, и didRegisterForRemoteNotificationsWithDeviceToken называется ожидаемым

  • Я тестирую на устройстве, а не на симуляторе

  • Фоновое приложение Refre * На устройстве включено 1057 *

  • Для приложения разрешены уведомления

  • Объект CKNotificationInfo создается с shouldSendContentAvailable = YES и alertBody = @ "" (не ноль)

Я копался в журналах консоли устройства, используя XCode, и обнаружил, что консоль выводит что-то, что говорит о том, что устройство получение уведомления pu sh, но по какой-то причине оно не передается в приложение:

default 18:02:47.127117 -0800   SpringBoard Received incoming message on topic com.apple.icloud-container.com.ztest.myapp at priority 10
default 18:02:47.133708 -0800   SpringBoard [com.ztest.myapp] Received remote notification request 0E01-5E4D [ waking: 0, hasAlertContent: 0, hasSound: 0 hasBadge: 0 hasContentAvailable: 1 hasMutableContent: 0 pushType: Alert]
default 18:02:47.133780 -0800   SpringBoard [com.ztest.myapp] Process delivery of push notification 0E01-5E4D
error   18:02:47.133851 -0800   SpringBoard [com.ztest.myapp] NOT requesting DUET deliver content-available, non-notifiying push notification 0E01-5E4D [pushType: Alert willNotifyUser: 0]
error   18:02:47.133997 -0800   SpringBoard [com.ztest.myapp] NOT delivering non-notifying push notification 0E01-5E4D [pushType: Alert willNotifyUser: 0]
default 18:02:47.134053 -0800   SpringBoard Getting effectiveSectionInfo for section identifier: com.ztest.myapp
default 18:02:47.134099 -0800   SpringBoard [com.ztest.myapp] Getting effective section info
default 18:02:47.135743 -0800   SpringBoard [com.ztest.myapp] Got effective section info [ hasResult: 1 ]

Я не совсем уверен, но кажется, что единственная строка, которая показывает «ошибку» с «НЕ доставляющим уведомления без уведомления pu sh», объяснит проблему. Но я не уверен, что является причиной этого. Может ли быть просто нестабильная среда разработки? Я попробовал это на нескольких iOS устройствах сейчас, так что это не просто проблема с этим одним устройством.

Может кто-нибудь предложить какие-либо причины, по которым уведомление о pu sh не получено в приложении, или предложить какой-нибудь способ проверить это и сузить, что происходит?

Спасибо.

ОБНОВЛЕНИЕ

Оказывается, я не совсем уверен, работает ли тихое уведомление pu sh на рабочей версии! Похоже, что pu sh отправляется сервером CloudKit (глядя на CK Dashboard), но не принимается на устройстве.

1 Ответ

1 голос
/ 13 февраля 2020

Оказывается, это была проблема iOS13, и она не работала над версией выпуска. Очевидно, Apple изменила поведение так, что при настройке CKSubscription свойство CKNotificationInfo alertBody должно иметь значение nil, а не пустую строку, что нужно было сделать, чтобы уведомления работали раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...