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

时间:2018-04-27 08:58:54

标签: swift notifications ios10

我在我的演示应用中实现了Extension Notification ServiceNotification Content Extension,它的工作非常好。

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

我为Notification Service ExtensionNotification Content Extension设置了所有必需的配置,就像我在框架中的演示应用程序一样。根据我的双重检查,一切都是一样的。

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

我是否需要以编程方式而不是故事板创建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)也没有调用。

我被困住了!请帮我?将不胜感激。

1 个答案:

答案 0 :(得分:1)

对于您要添加到您的私有框架中的Notification Service ExtensionNotification Content Extension,我很理解。因此,您的框架包含sharedInstance,这就是为什么您不能在框架中实现这两个扩展的原因,因为它们不允许这样做。

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

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

  2. 将此框架与您的私有框架一起添加到您的应用程序中。

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

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