Szukaj…


Wprowadzenie

Bogate powiadomienia umożliwiają dostosowanie wyglądu powiadomień lokalnych i zdalnych, gdy pojawiają się na urządzeniu użytkownika. Takie powiadomienie obejmuje głównie UNNotificationServiceExtension i UNNotificationContentExtension, tj. Wyświetlanie zwykłego powiadomienia w sposób rozszerzony

Tworzenie prostego UNNotificationContentExtension

Krok 1

Dostosowanie środowiska do powiadomień. Upewnij się, że masz włączone tryby tła i powiadomienia push Włączanie trybów tła

Włączanie powiadomień push

Krok 2: Utworzenie UNNotificationContentExtension

Kliknij ikonę + u dołu, która tworzy szablon docelowy, i wybierz opcję Rozszerzenia treści powiadomień -> dalej -> utwórz nazwę rozszerzenia treści -> zakończ Tworzenie UNNotificationContentExtension

Krok 3: Konfigurowanie pliku info.plist utworzonego rozszerzenia

wprowadź opis zdjęcia tutaj

Słownik w NSExtension oznacza sposób wyświetlania treści powiadomienia, które są wykonywane po długim naciśnięciu otrzymanego powiadomienia

  • UNNotificationExtensionOverridesDefaultTitle: Domyślnie możemy nadać niestandardowy tytuł naszemu powiadomieniu, który wyświetla nazwę aplikacji self.title = myTitle
  • UNNotificationDefaultContentHidden: Ta wartość logiczna określa, czy domyślna treść powiadomienia ma być ukryta, czy nie
  • UNNotificationCategory: Kategoria jest tworzona w UNUserNotificationCenter w Twojej aplikacji. Tutaj może to być ciąg lub tablica ciągów, więc każda kategoria może dawać różne typy danych, z których możemy tworzyć różne interfejsy użytkownika. Wysyłany ładunek musi zawierać nazwę kategorii, aby wyświetlić to konkretne rozszerzenie
  • UNNotificationExtensionInitialContentSizeRatio: Rozmiar początkowej zawartości, tj. Przy pierwszym wyświetleniu ContentExtension początkowej wielkości w odniesieniu do szerokości urządzenia. tutaj 1 oznacza, że wysokość będzie równa szerokości

Krok 4: Tworzenie UNNotificationAction i UNNotificationCategory w naszej aplikacji

W aplikacji AppDelegate.swift didFinishLaunchingWithOptions dodaj funkcję

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

Stworzyliśmy dwie UNNotificationAction z identyfikatorami ID1 i ID2 i dodaliśmy te akcje do UNNotificationCategory o identyfikatorze CATID1 ( CATID1 kategorii w pliku info.plist ContentExtension są takie same, to, co tutaj stworzyliśmy, powinno być użyte w ładunku i pliku plist). Ustawiamy kategorię na UNUserNotificationCenter naszej aplikacji, aw następnym wierszu rejestrujemy się w celu powiadomienia, które wywołuje funkcję didRegisterForRemoteNotificationsWithDeviceToken której otrzymujemy token urządzenia

Uwaga: nie zapomnij import UserNotifications do AppDelegate.swift i dodać UNUserNotificationCenterDelegate

Krok 5: Przykładowy ładunek dla NotificationContent

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

Krok 6: Konfigurowanie rozszerzenia treści

Odpowiednie działania dla kategorii są automatycznie wyświetlane podczas wykonywania działania powiadomienia. Pozwala nam zobaczyć kod, w jaki sposób jest wykonywany

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

Krok 7: Wynik

Po otrzymaniu i długim naciśnięciu / kliknięciu Wyświetl powiadomienie, powiadomienie wygląda następująco wprowadź opis zdjęcia tutaj

Tytuł brzmi „Koushik”, ponieważ jako YES self.title = "Koushik" i UNNotificationExtensionOverrideDefaultTitle . W kroku 3 UNNotificationExtensionDefaultContentHidden jako NIE, jeśli TAK, to powiadomienie będzie wyglądać jak obrazy 3 i 4.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow