Поиск…


Вступление

«Богатые уведомления» позволяют настраивать внешний вид локальных и удаленных уведомлений, когда они появляются на устройстве пользователя. Уведомление Rich в основном включает UNNotificationServiceExtension и UNNotificationContentExtension, т.е. отображение обычного уведомления расширенным образом

Создание простого UNNotificationContentExtension

Шаг 1

Обеспечение соответствия среды для уведомления. Удостоверьтесь, что вы включили фоновый режим и Push-уведомление Включение фоновых режимов

Включение уведомлений Push

Шаг 2. Создание UNNotificationContentExtension

Нажмите на значок « внизу, который создает целевой шаблон и выберите «Расширение содержимого уведомлений» -> далее -> создать имя для расширения содержимого -> завершить Создание 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.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow