【问题标题】:How do I create a UNNotificationContentExtension without a Storyboard?如何在没有情节提要的情况下创建 UNNotificationContentExtension?
【发布时间】:2017-12-11 17:13:34
【问题描述】:

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

我尝试删除 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>

有人为内容扩展做过这个吗?

【问题讨论】:

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


    【解决方案1】:

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

    值应该是你的扩展的命名空间和类 主视图控制器。例如,如果您的扩展程序被调用 Pretty Notification,类为PrettyNotificationViewController,则输入Pretty_Notification.PrettyNotificationViewController

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2014-04-21
      • 2015-10-26
      • 1970-01-01
      • 2015-09-12
      相关资源
      最近更新 更多