为我的应用的通知处理添加内容扩展程序。我有它工作,但我想在没有直接指定故事板的情况下这样做。原因是我希望能够将其传递给第三方框架(我正在开发)以处理呈现通知和管理用户响应。
我尝试删除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>
是否有人为内容扩展做了这个?
答案 0 :(得分:0)
根据this answer,我认为您在NSExtensionPrincipalClass
中缺少模块前缀:
值应该是扩展名的名称空间和类 主ViewController。例如,如果调用了您的扩展名 漂亮通知,类是 PrettyNotificationViewController ,您可以输入 Pretty_Notification.PrettyNotificationViewController 。