如何在没有故事板的情况下创建UNNotificationContentExtension?

时间:2017-12-11 17:13:35

标签: ios push-notification ios-app-extension

为我的应用的通知处理添加内容扩展程序。我有它工作,但我想在没有直接指定故事板的情况下这样做。原因是我希望能够将其传递给第三方框架(我正在开发)以处理呈现通知和管理用户响应。

我尝试删除NSExtensionMainStoryboard条目并添加NSExtensionPrincipalClass条目,以便我可以在代码中加载视图。但是,我的课程没有被实例化。这是类定义:

class NotificationViewController: NSObject, UNNotificationContentExtension {
    override init() {
        super.init()
        print("extension instantiated")
    }

    func didReceive(_ notification: UNNotification) {
        print("notification received")
    }
}

这是我的NSExtension条目:

<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>UNNotificationExtensionDefaultContentHidden</key>
        <true/>
        <key>UNNotificationExtensionCategory</key>
        <string>Messaging</string>
        <key>UNNotificationExtensionInitialContentSizeRatio</key>
        <real>1</real>
    </dict>
    <key>NSExtensionPrincipalClass</key>
    <string>NotificationViewController</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.usernotifications.content-extension</string>
</dict>

是否有人为内容扩展做了这个?

1 个答案:

答案 0 :(得分:0)

根据this answer,我认为您在NSExtensionPrincipalClass中缺少模块前缀:

  

值应该是扩展名的名称空间和类   主ViewController。例如,如果调用了您的扩展名   漂亮通知,类是 PrettyNotificationViewController ,您可以输入 Pretty_Notification.PrettyNotificationViewController