在动态框架中实现通知服务和内容扩展

Implement Notification Service and Content Extension in Dynamic Framework

我已经在我的演示应用程序中实现了 Extension Notification ServiceNotification Content Extension,它运行得非常好。

现在,我必须在我的框架中实现它。意味着我正在开发像聊天应用程序一样支持的动态框架。在框架中 所有屏幕都是以编程方式创建的,它不包含任何故事板或 XIB。

我已经为 Notification Service ExtensionNotification Content Extension 设置了所有必需的配置,就像我在框架中的演示应用程序一样。一切都和我仔细检查的一样。

我正在努力实施 Notification Service ExtensionNotification Content Extension

我是否需要以编程方式创建 Notification Content 而不是故事板? 我是否需要添加目标依赖项? 我错过了什么?

On Dragging notification it's doesn't show me notification content.

下面是我目前用于本地通知测试的代码。此代码在演示应用程序中有效。

@available(iOS 10.0, *)
func scheduleNotification() {

    UNUserNotificationCenter.current().delegate = self

    let content = UNMutableNotificationContent()
    content.title = "Notification"
    content.body = "We will remind you that your notification demo is performed well."
    content.sound = UNNotificationSound.default()
    content.categoryIdentifier = "myNotificationCategory"
    content.userInfo = ["Image" as AnyHashable: "https://codepo8.github.io/canvas-images-and-pixels/img/horse.png"]

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    let request = UNNotificationRequest(identifier: "request", content: content, trigger: trigger)
    UNUserNotificationCenter.current().add(request) { (error) in
        if error != nil {
            print("Error to add notification: \(error!.localizedDescription)")
        } else {
            print("Notification added")
        }
    }
}

我也在调试测试,但是didReceive(_ notification: UNNotification)也没有调用。

我卡住了!请帮我?帮助将不胜感激。

我明白你关于将 Notification Service ExtensionNotification Content Extension 添加到你的私有框架中的观点。所以你的框架包含 sharedInstance,这就是为什么你不能在你的框架中实现这两个扩展,因为它是不允许的。

因此有创建一个小框架的解决方案,其中包含与您的扩展方法相关的代码,此方法将是 class 方法。它包含填充您的通知服务的代码。

  1. 创建新的小框架,其中包含 class 与 Notification Content ExtensionNotification Service Extension 相关的方法和代码。

  2. 使用您的私有框架在您的应用程序中添加此框架。

  3. 在您的应用程序中添加 Notification Content ExtensionNotification Service Extension 目标并实现所需的方法,从应用程序调用相关方法到您的通知框架。

您将使用此方法获得解决方案,但您还需要在应用程序中添加一个框架