我需要在 iOS 10 及更高版本上为 iPhone(5x、6x 和 7x)型号启用丰富通知。通知带有嵌入式图像,默认情况下应展开图像。请参阅下面的示例图像:
任何人都可以帮忙吗?
提前致谢。
我在 iOS 10 中的 Rich Notification 文档中创建了一个示例,看看它你可能会得到一些关于 Rich Notification 的想法,该示例是关于在UNNotificationContentExtension
步骤1
第 2 步:创建一个 UNNotificationContentExtension
单击底部创建目标模板的+图标,然后选择通知内容扩展 -> 下一步 -> 为内容扩展创建名称 -> 完成
第三步:配置已创建扩展的 info.plist 文件
NSExtension 中的字典表示通知内容的显示方式,这些是在长按收到的通知时执行的
self.title = myTitle
UNUserNotificationCenter
在您的应用程序中创建的。这里它可以是一个字符串或一个字符串数组,因此每个类别都可以提供不同类型的数据,我们可以从中创建不同的 UI。我们发送的有效负载必须包含类别名称才能显示此特定扩展名第 4 步:在我们的应用程序中创建UNNotificationAction
和UNNotificationCategory
在您应用的 AppDelegate.swiftdidFinishLaunchingWithOptions
函数中添加
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
并将ID2
这些操作添加到UNNotificationCategory
带标识符的一个CATID1
(ContentExtension 的 info.plist 文件中的 categoryID 相同,我们在这里创建的应该用于有效负载和 plist 文件)。我们将类别设置为应用程序的类别UNUserNotificationCenter
,在下一行中,我们正在注册通知,该通知调用didRegisterForRemoteNotificationsWithDeviceToken
我们获取设备令牌的函数
注意:不要忘记import UserNotifications
在您的 AppDelegate.swift 中添加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 步:结果
标题是“Koushik”,因为我们给出了self.title = "Koushik"
并且UNNotificationExtensionOverrideDefaultTitle
是。在第 3 步UNNotificationExtensionDefaultContentHidden
中,如果其为“是”,我们将其设为“否”,则通知将类似于图 3 和图 4。
注意:我们不能在内容扩展中使用滚动视图或任何类型的滚动,但我们可以self.preferredContentSize = CGSize(width: 280, height: minimumSize.height)
用来增加视图的内容大小但是默认的消息应用程序使用滚动。如果我错了,请纠正我。