ios - 如何在没有 Storyboard 的情况下创建 UNNotificationContentExtension?
<p><p>为我的应用的通知处理添加内容扩展。我让它工作,但我想在没有直接指定 Storyboard 的情况下做到这一点。原因是我希望能够将其传递给(我正在开发的)第 3 方框架,以处理呈现通知和管理用户响应。</p>
<p>我尝试删除 <code>NSExtensionMainStoryboard</code> 条目并添加 <code>NSExtensionPrincipalClass</code> 条目,以便我可以在代码中加载 View 。但是,我的类(class)没有被实例化。这是类定义:</p>
<pre><code>class NotificationViewController: NSObject, UNNotificationContentExtension {
override init() {
super.init()
print("extension instantiated")
}
func didReceive(_ notification: UNNotification) {
print("notification received")
}
}
</code></pre>
<p>这是我的 NSExtension 条目:</p>
<pre><code><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>
</code></pre>
<p>有人为内容扩展做过这个吗?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>根据 <a href="https://stackoverflow.com/a/39882189/293215" rel="noreferrer noopener nofollow">this answer</a> ,我认为您在 <code>NSExtensionPrincipalClass</code> 中缺少模块前缀:</p>
<blockquote>
<p>The value should be thenamespace of your extension and the class of
the main ViewController.For example, if your extension is called
<strong>Pretty Notification</strong> and the class is <strong>PrettyNotificationViewController</strong>, you would enter <strong>Pretty_Notification.PrettyNotificationViewController</strong>.</p>
</blockquote></p>
<p style="font-size: 20px;">关于ios - 如何在没有 Storyboard 的情况下创建 UNNotificationContentExtension?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/47757969/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/47757969/
</a>
</p>
页:
[1]