iOS Créer un simple UNNotificationContentExtension


Exemple

Étape 1

Rendre l'environnement adapté à la notification. Assurez-vous d'avoir activé les modes d'arrière-plan et la notification push Activation des modes d'arrière-plan

Activation des notifications push

Étape 2: création d'une extension UNNotificationContentExtension

Cliquez sur l'icône + en bas qui crée un modèle cible et sélectionnez Notification Content Extention -> next -> créer un nom pour l'extension de contenu -> finish Créer UNNotificationContentExtension

Étape 3: Configuration du fichier info.plist de l'extension créée

entrer la description de l'image ici

Le dictionnaire dans NSExtension indique comment le contenu de la notification est affiché, ceux-ci sont effectués sur une pression longue sur la notification reçue

  • UNNotificationExtensionOverridesDefaultTitle: Nous pouvons donner un titre personnalisé pour notre notification par défaut, il affiche le nom de l'application self.title = myTitle
  • UNNotificationDefaultContentHidden: Ce booléen détermine si le corps par défaut de la notification doit être masqué ou non
  • UNNotificationCategory: La catégorie est créée dans UNUserNotificationCenter dans votre application. Ici, il peut s'agir d'une chaîne ou d'un tableau de chaînes, de sorte que chaque catégorie peut donner différents types de données à partir desquelles nous pouvons créer différentes interfaces utilisateur. La charge utile que nous envoyons doit contenir le nom de la catégorie pour afficher cette extension particulière
  • UNNotificationExtensionInitialContentSizeRatio: La taille du contenu initial, c'est-à-dire lors de l'affichage de ContentExtension pour la première fois, la taille initiale par rapport à la largeur du périphérique. ici 1 indique que la hauteur sera égale à la largeur

Étape 4: Création de UNNotificationAction et UNNotificationCategory dans notre application

Dans la fonction didFinishLaunchingWithOptions votre application, la fonction didFinishLaunchingWithOptions ajoute

    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()

Nous avons créé deux UNNotificationAction avec les identifiants ID1 et ID2 et ajouté ces actions à UNNotificationCategory avec l'identifiant CATID1 (l'ID de catégorie du fichier info.plist de ContentExtension est identique, ce que nous avons créé ici doit être utilisé dans le fichier payload et le fichier plist). Nous définissons la catégorie à UNUserNotificationCenter notre application et à la ligne suivante, nous enregistrons la notification qui appelle la fonction didRegisterForRemoteNotificationsWithDeviceToken où nous obtenons le jeton de périphérique

Remarque: n'oubliez pas d' import UserNotifications dans votre AppDelegate.swift et d'ajouter UNUserNotificationCenterDelegate

Étape 5: Exemple de charge utile pour le NotificationContent

 'aps': {
    'badge': 0,
    'alert': {
        'title': "Rich Notification",
        'body': "Body of RICH NOTIFICATION",
        },
    'sound' : "default",
    'category': "CATID1",
    'mutable-content':"1",
    },
'attachment': "2"

Étape 6: Configuration de ContentExtension

Les actions correspondantes pour la catégorie sont automatiquement affichées lorsque l'action de notification est effectuée. Permet de voir le code comment sa réalisation

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")
    }
    
    }
}

Étape 7: Résultat

Après avoir reçu et appuyé longuement / en cliquant sur la notification, la notification ressemble à ceci: entrer la description de l'image ici

Le titre est "Koushik" puisque nous avons donné self.title = "Koushik" et UNNotificationExtensionOverrideDefaultTitle comme YES. A l'étape 3, nous avons donné UNNotificationExtensionDefaultContentHidden comme NO si son OUI alors la notification ressemblera aux images 3 et 4.