Swift MacCatalyst生成时未收到CKQueryNotification
我的应用程序通常在iOS或iPadOS上从Swift MacCatalyst生成时未收到CKQueryNotification,swift,xcode,cloudkit,mac-catalyst,Swift,Xcode,Cloudkit,Mac Catalyst,我的应用程序通常在iOS或iPadOS上从CKQuerySubscription接收CKQueryNotification,但使用具有相同捆绑ID(由Xcode 11.6生成)的MacCatalyst时,它从不接收CKQueryNotification即使 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 在应用程序
CKQuerySubscription
接收CKQueryNotification
,但使用具有相同捆绑ID(由Xcode 11.6生成)的MacCatalyst时,它从不接收CKQueryNotification
即使
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
在应用程序启动时正确调用-每当CloudKit上有记录更改时,方法
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Swift.Void)
从不在MacCatalyst构建上启动,而在iOS上会立即启动
你知道为什么吗?苹果论坛上有一个帖子,但还没有找到解决方案:你没有分享足够的代码让我们帮助你,所以我猜一下。尝试按如下方式定义notificationInfo值,看看这是否会产生影响。内部DIDregisterForemotentifications:
// This is your subscription object
let subscription = CKQuerySubscription(recordType: "Subscription", 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 = ""
info.alertBody = ""
info.title = ""
info.alertActionLocalizationKey = ""
// Assign the notification info to your subscription
subscription.notificationInfo = info
对于在开发应用程序时遇到此问题的任何人,我决定无论如何发布应用程序,并发现在应用程序商店版本中,在Mac上,catalyst应用程序几乎可以立即收到通知。因此,这似乎是CloudKit的调试环境错误。很抱歉,我已经在这么做了,db.fetchAllSubscriptions会正确返回订阅