iOS
Богатые уведомления
Поиск…
Вступление
«Богатые уведомления» позволяют настраивать внешний вид локальных и удаленных уведомлений, когда они появляются на устройстве пользователя. Уведомление Rich в основном включает UNNotificationServiceExtension и UNNotificationContentExtension, т.е. отображение обычного уведомления расширенным образом
Создание простого UNNotificationContentExtension
Шаг 1
Обеспечение соответствия среды для уведомления. Удостоверьтесь, что вы включили фоновый режим и Push-уведомление
Шаг 2. Создание UNNotificationContentExtension
Нажмите на значок « +» внизу, который создает целевой шаблон и выберите «Расширение содержимого уведомлений» -> далее -> создать имя для расширения содержимого -> завершить
Шаг 3. Настройка файла info.plist созданного расширения
Словарь в NSExtension означает, как отображается содержимое уведомлений, они выполняются при длительном нажатии полученного уведомления
- UNNotificationExtensionOverridesDefaultTitle: мы можем предоставить пользовательский заголовок для нашего уведомления по умолчанию, оно отображает имя приложения
self.title = myTitle
- UNNotificationDefaultContentHidden: этот логический элемент определяет, должен ли скрытый элемент уведомления по умолчанию скрываться или нет
- UNNotificationCategory: Категория создана в
UNUserNotificationCenter
в вашем приложении. Здесь это может быть строка или массив строк, поэтому каждая категория может предоставлять разные типы данных, из которых мы можем создавать разные пользовательские интерфейсы. Посылаемая нами полезная информация должна содержать название категории, чтобы отобразить это конкретное расширение - 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()
Мы создали два UNNotificationAction
с идентификаторами ID1
и ID2
и добавили эти действия в UNNotificationCategory
с идентификатором CATID1
(идентификатор категории в файле info.plist ContentExtension тот же, то, что мы создали здесь, должно использоваться в полезной нагрузке и в файле 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: Результат
После получения и долгого нажатия / нажатия на просмотр уведомления уведомление выглядит так:
Название - «Кошик», так как мы дали self.title = "Koushik"
и UNNotificationExtensionOverrideDefaultTitle
как ДА. На шаге 3 мы UNNotificationExtensionDefaultContentHidden
как НЕТ, если его YES, тогда уведомление будет выглядеть как изображения 3 и 4.