创建一个简单的 UNNotificationContentExtension
步骤 1
使环境适合通知。确保启用了“ 后台模式” 和“ 推送通知”
第 2 步:创建 UNNotificationContentExtension
单击底部的 + 图标创建目标模板,然后选择通知内容扩展 - >下一步 - >为内容扩展创建名称 - >完成
步骤 3:配置创建的扩展的 info.plist 文件
NSExtension 中的字典表示通知内容的显示方式,这些是在长按收到的通知时执行的
- UNNotificationExtensionOverridesDefaultTitle:默认情况下,我们可以为通知提供自定义标题,显示应用程序的名称
self.title = myTitle
- UNNotificationDefaultContentHidden:此布尔值确定是否隐藏通知的默认主体
- UNNotificationCategory:类别在应用程序的
UNUserNotificationCenter
中创建。这里它可以是字符串或字符串数组,因此每个类别都可以提供不同类型的数据,我们可以从中创建不同的 UI。我们发送的有效负载必须包含类别名称才能显示此特定扩展名 - UNNotificationExtensionInitialContentSizeRatio:初始内容的大小,即第一次显示 ContentExtension 时初始大小相对于设备宽度的大小。这里 1 表示高度等于宽度
第 4 步:在我们的应用程序中创建 UNNotificationAction
和 UNNotificationCategory
在你的应用程序的 AppDelegate.swift didFinishLaunchingWithOptions
功能添加
let userNotificationAction:UNNotificationAction = UNNotificationAction.init(identifier: "ID1", title: "வணக்கம்", options: .destructive)
let userNotificationAction2:UNNotificationAction = UNNotificationAction.init(identifier: "ID2", title: "Success", options: .destructive)
let notifCategory:UNNotificationCategory = UNNotificationCategory.init(identifier: "CATID1", actions: [userNotificationAction,userNotificationAction2], intentIdentifiers: ["ID1","ID2"] , options:.customDismissAction)
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().setNotificationCategories([notifCategory])
UIApplication.shared.registerForRemoteNotifications()
我们用标识符 ID1
和 ID2
创建了两个 UNNotificationAction
,并将这些动作添加到标识为 CATID1
的 UNNotificationCategory
(ContentExtension 的 info.plist 文件中的 categoryID 相同,我们在这里创建的应该用在有效负载和 plist 文件中)。我们将类别设置为我们的应用程序的 UNUserNotificationCenter
,在下一行中我们正在注册调用 didRegisterForRemoteNotificationsWithDeviceToken
函数的通知,我们获取设备令牌
注意:不要忘记在 AppDelegate.swift 中使用 import UserNotifications
并添加 UNUserNotificationCenterDelegate
步骤 5:NotificationContent 的示例有效负载
'aps': {
'badge': 0,
'alert': {
'title': "Rich Notification",
'body': "Body of RICH NOTIFICATION",
},
'sound' : "default",
'category': "CATID1",
'mutable-content':"1",
},
'attachment': "2"
第 6 步:配置 ContentExtension
执行通知操作时,将自动显示该类别的相应操作。让我们看看代码是如何执行的
import UIKit
import UserNotifications
import UserNotificationsUI
class NotificationViewController: UIViewController, UNNotificationContentExtension {
@IBOutlet var imageView: UIImageView?
override func viewDidLoad() {
super.viewDidLoad()
}
func didReceive(_ notification: UNNotification) {
self.title = "Koushik"
imageView?.backgroundColor = UIColor.clear
imageView?.image = #imageLiteral(resourceName: "welcome.jpeg")
}
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
self.title = "Koushik"
imageView?.image = UIImage.init(named: "Success.jpeg")
if(response.actionIdentifier == "ID1")
{
imageView?.image = UIImage.init(named: "Success.jpeg")
}
else
{
imageView?.image = UIImage.init(named: "welcome.jpeg")
}
}
}
第 7 步:结果
收到并长按/单击查看通知后,通知如下所示 https://i.stack.imgur.com/BOkQC.jpg
标题是 Koushik
,因为我们将 self.title = "Koushik"
和 UNNotificationExtensionOverrideDefaultTitle
作为 YES。在步骤 3 中,如果是,则将 UNNotificationExtensionDefaultContentHidden
作为 NO,然后通知将看起来像图像 3 和 4。