Scheduling a Notification Locally from Your App

Panther·2021년 8월 18일
0

https://developer.apple.com/documentation/usernotifications/scheduling_a_notification_locally_from_your_app

"Create and schedule notifications from your app when you want to get the user’s attention."

사용자의 주의를 원하는 시점에 앱으로부터 노티피케이션을 생성하거나 스케줄링합니다.

Overview

사용자의 주의를 가져오기 위해 로컬 노티피케이션을 사용할 수 있습니다. 알림, 소리 재생, 아이콘에 badge 추가를 할 수 잇습니다. 예를 들어 백그라운드 앱은 앱이 특정 작업을 마친 시점에 알림을 표시하도록 시스템에게 요청할 수 있습니다. 항상 사용자가 원하는 중요한 데이터 전달은 로컬 노티피케이션을 사용해야 합니다.

시스템은 구체화한 시간 혹은 위치에 기반해 노티피케이션의 전달을 처리합니다. 앱이 실행중이지 않거나 백그라운드에 있을 때 노티피케이션의 전달이 발생하면 시스템은 사용자와 상호작용 합니다. 앱이 포어그라운드에 있는 경우 시스템은 노티피케이션의 처리를 위해 앱에게 전달합니다.

Create the Notification's Content

노티피케이션의 세부사항으로 UNMutableNotificationContent 객체의 속성을 채워야 합니다. 영역을 채운 것에 따라 시스템은 노티피케이션 방법을 정의합니다. 예를 들어 소리를 재생하려면 객체의 소리 속성에 값을 할당해야 합니다. Listing 1은 제목 스트링과 바디 텍스트를 포함하고 있는 알림 표시를 위한 컨텐트 객체를 보여주고 있습니다. 같은 요청에 대해 상호작용의 다양한 타입을 구체화할 수 있습니다.

Listing 1 Configuring the notification content

let content = UNMutableNotificationContent()
content.title = "Weekly Staff Meeting"
content.body = "Every Tuesday at 2pm"

Specify the Conditions for Delivery

UNCalendarNotificationTrigger, UNTimeIntervalNotificationTrigger, UNLocationNotificationTrigger 객체를 사용해서 노티피케이션 전달 조건을 구체화할 수 있습니다. 각 객체는 다른 파라미터를 요구합니다. 예를 들어 달력 기반 트리거는 전달의 날짜 및 시간을 구체화하길 요구합니다.

Listing 2는 화요일 오후 두 시마다 시스템에 전달하기 위한 노티피케이션 설정 방법을 보여주고 있습니다. DateComponents 구조체는 이벤트에 대한 타이밍을 구체화하고 있습니다. 반복 파라미터를 true로 설정한 트리거 설정은 시스템이 전달 후 이벤트를 재스케줄링할 수 있도록 해줍니다.

Listing 2 Configuring a recurring date-based trigger

// Configure the recurring date.
var dateComponents = DateComponents()
dateComponents.calendar = Calendar.current

dateComponents.weekday = 3  // Tuesday
dateComponents.hour = 14    // 14:00 hours
   
// Create the trigger as a repeating event.    
let trigger = UNCalendarNotificationTrigger(
         dateMatching: dateComponents, repeats: true)

Create and Register a Notification Request

컨텐트와 트리거 컨디션을 포함하는 UNNotificationRequest 객체를 생성하고, 시스템으로 요청을 스케줄링하기 위해 add(_:withCompletionHandler:) 메소들르 호출하시기 바랍니다. Listing 3은 요청 객체를 채우기 위해 Listing 1과 Listing 2로부터의 컨텐트를 사용하는 예시를 보여주고 있습니다.

Listing 3 Registering the notification request

// Create the request
let uuidString = UUID().uuidString
let request = UNNotificationRequest(identifier: uuidString, 
            content: content, trigger: trigger)

// Schedule the request with the system.
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.add(request) { (error) in
   if error != nil {
      // Handle any errors.
   }
}

Cancel a Scheduled Notification Request

스케줄링이 되면 노티피케이션 요청은 트리거 조건이 충족될 때까지 남아있거나, 명시적으로 취소할 때까지 남게 됩니다. 보통 조건이 변하거나 더 이상 사용자에게 알릴 필요가 없을 때 요청을 취소하게 될 것입니다. 예를 들어 사용자가 리마인더를 완료하면 해당 리마인더와 관련이 있는 활성화된 요청을 취소할 수 있습니다. 활성화된 노티피케이션 요청을 취소하려면 UNUserNotificationCenterremovePendingNotificationRequests(withIdentifiers:) 메소드를 호출해야 합니다.

Topics



See Also


Notification Requests

UNNotificationRequest

노티피케이션의 컨텐트를 포함하고, 전달 조건을 트리거하는 로컬 노티피케이션 스키줄링을 위한 요청입니다.

https://developer.apple.com/documentation/usernotifications/unnotificationrequest
https://velog.io/@panther222128/UNNotificationRequest

UNNotification

시스템이 앱에 전달하는 로컬 혹은 원격 노티피케이션에 대한 데이터입니다.

https://developer.apple.com/documentation/usernotifications/unnotification
https://velog.io/@panther222128/UNNotification


0개의 댓글