答案 0 :(得分:4)
我在iOS 10中的Rich Notification文档中创建了一个示例,看看它你可能会得到一些关于Rich Notification的想法,例子是关于在UNNotificationContentExtension
中显示图像
第1步
第2步:创建UNNotificationContentExtension
点击底部的 + 图标,创建目标模板并选择通知内容扩展 - >下一个 - >为内容扩展程序创建名称 - >完成
步骤3:配置已创建扩展程序的info.plist文件
NSExtension中的字典表示通知内容的显示方式,这些是在长按收到的通知时执行的
self.title = myTitle
UNUserNotificationCenter
中创建。在这里它可以是字符串或字符串数组,因此每个类别都可以提供不同类型的数据,我们可以从中创建不同的UI。我们发送的有效负载必须包含类别名称才能显示此特定扩展名 第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()
我们创建了两个标识为UNNotificationAction
和ID1
的{{1}},并将这些操作添加到标识为ID2
的{{1}}(ContentExtension的info.plist中的categoryID)文件是相同的,我们在这里创建的应该用在有效负载和plist文件中)。我们将类别设置为我们的应用程序UNNotificationCategory
,在下一行中,我们正在注册调用CATID1
函数的通知,我们获取设备令牌
注意:不要忘记AppDelegate.swift中的UNUserNotificationCenter
并添加didRegisterForRemoteNotificationsWithDeviceToken
步骤5:NotificationContent的示例有效负载
import UserNotifications
第6步:配置ContentExtension
执行通知操作时,将自动显示该类别的相应操作。让我们看看代码是如何执行的
UNUserNotificationCenterDelegate
第7步:结果
标题为“Koushik”,因为我们将 'aps': {
'badge': 0,
'alert': {
'title': "Rich Notification",
'body': "Body of RICH NOTIFICATION",
},
'sound' : "default",
'category': "CATID1",
'mutable-content':"1",
},
'attachment': "2"
和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")
}
}
}
设为是。在第3步中,我们将self.title = "Koushik"
设为NO,如果为YES,则通知将显示为图像3和4。
注意:我们不能在内容扩展中使用滚动视图或任何滚动,但我们可以使用UNNotificationExtensionOverrideDefaultTitle
来增加视图的内容大小但是默认的消息应用程序使用滚动。如果我错了,请纠正我。