didReceiveRemoteNotification не вызывается на MacCatalyst - PullRequest
1 голос
/ 14 февраля 2020

Когда я создаю CKSubscription, didReceiveRemoteNotification вызывается iOS просто отлично, но не в MacOS. Я столкнулся с темой 2015 года, в которой говорилось об ошибке, и предложенным обходным решением было установить пустую строку в сообщении soundName информации уведомления - к сожалению, это не решило проблему для меня.

Вот как я регистрирую свою удаленные уведомления:

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        let subscription = CKQuerySubscription(recordType: "Reminder", predicate: NSPredicate(format: "TRUEPREDICATE"), options: [.firesOnRecordCreation, .firesOnRecordUpdate])

        // Here we customize the notification message
        let info = CKSubscription.NotificationInfo()

        info.shouldSendContentAvailable = true
        info.desiredKeys = ["identifier", "title", "date"]
        info.soundName = ""

        subscription.notificationInfo = info

        // Save the subscription to Private Database in Cloudkit
        CKContainer.default().privateCloudDatabase.save(subscription, completionHandler: { subscription, error in
            if error == nil {
                // Subscription saved successfully 
            } else {
                // Error occurred
            }
        })
    }

1 Ответ

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

Это связано с тем, что идентификатор пакета отличается от Ma c Catalyst. Благодаря введенной в ближайшее время универсальной покупке приложений приложения-катализаторы теперь могут иметь тот же идентификатор пакета, что и их iOS аналог, и это решает проблему.

Обратите внимание, что у меня также были проблемы со значениями ключей облачного набора, не синхронизирующимися на Ma c (NSUbiquitousKeyValueStore). Наличие единого идентификатора пакета для Ma c и iOS также решило проблему.

...