수색…
소개
리치 알림을 사용하면 로컬 및 원격 알림이 사용자의 장치에 표시 될 때 모양을 사용자 지정할 수 있습니다. 대부분의 알림에는 UNNotificationServiceExtension 및 UNNotificationContentExtension이 포함됩니다. 즉, 일반 알림을 확장 된 방식으로 표시합니다.
간단한 UNNotificationContentExtension 만들기
1 단계
알림 환경에 적합한 환경 만들기. 백그라운드 모드 및 푸시 알림 을 활성화했는지 확인하십시오.
2 단계 : UNNotificationContentExtension 만들기
아래쪽의 + 아이콘을 클릭하여 대상 템플릿을 만들고 알림 내용 확장 -> 다음 -> 내용 확장 이름 만들기 -> 완료
3 단계 : 생성 된 확장 프로그램의 info.plist 파일 구성
NSExtension의 사전은 알림 내용이 표시되는 방법을 나타내며, 수신 된 알림을 길게 누르면 수행됩니다
- UNNotificationExtensionOverridesDefaultTitle : 기본적으로 알림의 맞춤 제목을 제공 할 수 있습니다. 응용 프로그램의 이름이 표시됩니다.
self.title = myTitle
- UNNotificationDefaultContentHidden :이 부울 값은 알림의 기본 본문을 숨길 지 여부를 결정합니다.
- UNNotificationCategory : 응용 프로그램의
UNUserNotificationCenter
에 범주가 만들어UNUserNotificationCenter
. 여기에는 문자열 또는 문자열 배열이있을 수 있으므로 각 카테고리는 서로 다른 UI를 만들 수있는 여러 유형의 데이터를 제공 할 수 있습니다. 이 특정 확장을 표시하기 위해 보낸 페이로드에는 카테고리 이름이 포함되어야합니다. - 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()
우리는 식별자 ID1
과 ID2
가진 두 개의 UNNotificationAction
을 만들고 식별자 CATID1
(ContentExtension의 info.plist 파일의 categoryID는 동일하며 페이로드와 plist 파일에서 여기에서 작성한 것과 동일해야 함)를 사용하여 UNNotificationCategory
에 이러한 작업을 추가했습니다. 카테고리를 애플리케이션의 UNUserNotificationCenter
하고 다음 줄에 장치 토큰을받는 didRegisterForRemoteNotificationsWithDeviceToken
함수를 호출하는 알림을 등록합니다
참고 : 귀하의 AppDelegate.swift에서 import UserNotifications
를 import UserNotifications
를 추가하는 것을 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
을 YES로 지정했기 때문에 제목은 "Koushik"입니다. 3 단계에서 UNNotificationExtensionDefaultContentHidden
을 YES로 지정하면 알림이 이미지 3과 4처럼 보입니다.