没有在 MacCatalyst 上调用 didReceiveRemoteNotification
Posted
技术标签:
【中文标题】没有在 MacCatalyst 上调用 didReceiveRemoteNotification【英文标题】:didReceiveRemoteNotification not being called on MacCatalyst 【发布时间】:2020-02-14 07:21:00 【问题描述】:当我创建 CKSubscription 时,在 ios 上调用 didReceiveRemoteNotification 就好了,但在 MacOS 上却不行。我遇到了一个 2015 SO 线程谈论一个错误,建议的解决方法是将通知信息的 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】:这与 Mac Catalyst 上的包标识符不同有关。由于即将推出的通用应用程序购买,催化剂应用程序现在可以使用与其 iOS 对应物相同的捆绑标识符,这解决了这个问题。
请注意,我还遇到了 cloudkit 键值在 Mac (NSUbiquitousKeyValueStore) 上不同步的问题。为 Mac 和 iOS 设置一个单独的 bundle id 也解决了这个问题。
【讨论】:
啊这就是为什么我在我的应用程序的 Catalyst 版本中也收到 NSUbiquitousKeyValueStore 错误的原因。我没有花任何时间,只是禁用了同步功能。 @rs7 我使用新的 Xcode 版本创建了具有相同捆绑 ID 的 macCatalyst 目标,但仍然无法接收来自 CloudKit 的远程通知 - 您是否尝试过它以及任何使其工作的方法? 只是添加应用程序(_, didRegisterForRemoteNotificationsWithDeviceToken) 被调用,但在mac上没有通知。还有 cc @EarlGrey 你成功了吗? 如果您可以为您的问题打开一个新线程并添加更多详细信息(didreceive 和 didRegisterForRemoteNotification 等的代码),我会调查一下。 谢谢@rs7 - 这是问题:***.com/questions/63421613/…以上是关于没有在 MacCatalyst 上调用 didReceiveRemoteNotification的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?
Xcode 11 无法识别静态库的架构:MacCatalyst (aka UIKitForMac)
Mac Catalyst 是不是支持 UIActivityViewController?
dyld:库未加载:@rpath/SwiftyStoreKit.framework/Versions/A/SwiftyStoreKit - macCatalyst