未使用macOS Notification Service Extension

时间:2019-08-11 14:31:53

标签: macos notifications unnotificationserviceextension

我的macOS应用程序具有通知服务扩展。

以下是该扩展名的代码:

import UserNotifications

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        print("Extension received notification!")

        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

        bestAttemptContent?.title = "Title modified!"
    }

    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }
}

我的有效载荷也很简单:

{"aps": {
        "alert":{"title":"Test1", "subtitle":"Test2", "body":"Test3"},
        "sound":"default",
        "mutable-content":1,
        "category":"news"
    }
}

但是,在收到通知后,标题不会被修改。我还尝试了Attach to process by PID or name菜单,但无法附加到该扩展名,这意味着它没有被运行。

还有很多其他问题正在询问有关iOS的信息,我尝试了这些解决方案,但不幸的是它们无法正常工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我在 Mac Catalyst 上遇到了同样的问题(iOS Notification Services扩展正常,但不适用于MAC OS)。 ( Xcode 11.1 ) 对于Mac OS X(Mac Catalyst)(如果您已经具有“应用程序沙箱”功能,请跳至步骤5)

  1. 选择扩展程序的目标。
  2. 然后在顶部选择标签“ 签名和功能
  3. 比点击功能+
  4. 添加“ 应用沙箱功能
  5. 确保已选中传入连接(服务器)(已启用 )。

请参阅所附图片。 Xcode Notification Services Extension target setting

答案 1 :(得分:0)

1-没有运行应用扩展程序(或似乎未运行)的另一种可能性是,发生了某些事情,扩展程序确实失败/崩溃,并且操作系统没有更改就交付了Push通知。 (尝试使用Xcode调试扩展程序。)

2-还要尝试清除Xcode中的目标数据和派生数据。

3-确保扩展的权利具有所有受支持的Mac(Mac Catalyst),并且不仅支持iOS密钥(如果用于Mac Catalyst)。

4-(Mac Catalyst)尝试在iOS上运行扩展程序(如果没有在Mac上运行,则意味着Mac目标中不应该存在某些配置/代码崩溃的问题)再次调试应该有所帮助

答案 2 :(得分:0)

检查您是否安装了多个版本的应用。 在我删除应用的发布版本(相同的捆绑 ID)后,一切都开始工作了。

pluginkitthis SO thread 将我推向正确的方向。