没有在 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的主要内容,如果未能解决你的问题,请参考以下文章

可能到来的 macOS 支持

如何在 MacCatalyst 中创建具有鲜艳背景的 UIWindow?

Xcode 11 无法识别静态库的架构:MacCatalyst (aka UIKitForMac)

Mac Catalyst 是不是支持 UIActivityViewController?

dyld:库未加载:@rpath/SwiftyStoreKit.framework/Versions/A/SwiftyStoreKit - macCatalyst

如何在 Mac Catalyst 应用程序中禁用默认键盘导航?