iOS上的丰富通知

时间:2017-04-27 08:10:48

标签: apple-push-notifications rich-notifications

我需要在iPhone(5x,6x和7x)型号的iOS 10及更高版本上启用Rich通知。通知附带嵌入的图像,默认情况下应扩展图像。请参见下面的示例图片:

Full view width utilized.

有人可以帮忙吗?

提前致谢。

1 个答案:

答案 0 :(得分:4)

我在iOS 10中的Rich Notification文档中创建了一个示例,看看它你可能会得到一些关于Rich Notification的想法,例子是关于在UNNotificationContentExtension中显示图像

第1步

使环境适合通知。确保您已启用背景模式推送通知 Enabling Background Modes

Enabling Push Notifications

第2步:创建UNNotificationContentExtension

点击底部的 + 图标,创建目标模板并选择通知内容扩展 - >下一个 - >为内容扩展程序创建名称 - >完成Creating UNNotificationContentExtension

步骤3:配置已创建扩展程序的info.plist文件

enter image description here

NSExtension中的字典表示通知内容的显示方式,这些是在长按收到的通知时执行的

  • UNNotificationExtensionOverridesDefaultTitle:默认情况下,我们可以为通知提供自定义标题,显示应用程序的名称self.title = myTitle
  • UNNotificationExtensionDefaultContentHidden:此布尔值确定是否隐藏通知的默认正文
  • UNNotificationCategory:类别在应用程序的UNUserNotificationCenter中创建。在这里它可以是字符串或字符串数​​组,因此每个类别都可以提供不同类型的数据,我们可以从中创建不同的UI。我们发送的有效负载必须包含类别名称才能显示此特定扩展名
  • UNNotificationExtensionInitialContentSizeRatio:初始内容的大小,即第一次显示ContentExtension时初始大小相对于设备宽度的情况。这里1表示高度等于宽度

第4步:在我们的应用中创建UNNotificationActionUNNotificationCategory

在您的应用的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()

我们创建了两个标识为UNNotificationActionID1的{​​{1}},并将这些操作添加到标识为ID2的{​​{1}}(ContentExtension的info.plist中的categoryID)文件是相同的,我们在这里创建的应该用在有效负载和plist文件中)。我们将类别设置为我们的应用程序UNNotificationCategory,在下一行中,我们正在注册调用CATID1函数的通知,我们获取设备令牌

注意:不要忘记AppDelegate.swift中的UNUserNotificationCenter并添加didRegisterForRemoteNotificationsWithDeviceToken

步骤5:NotificationContent的示例有效负载

import UserNotifications

第6步:配置ContentExtension

执行通知操作时,将自动显示该类别的相应操作。让我们看看代码是如何执行的

UNUserNotificationCenterDelegate

第7步:结果

收到并长按/点击查看通知后,通知看起来像enter image description here

标题为“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来增加视图的内容大小但是默认的消息应用程序使用滚动。如果我错了,请纠正我。