BOID
[iOS] 로컬알림이란? - HoonIOS 본문
안녕하세요 HoonIOS입니다. :)
지금까지 메시지(알림창)인 alert에 대해 포스팅을 했습니다. 근데 메시지를 사용하면 앱이 백그라운드에 있거나 앱이 종료되어있을 때 알림이 가지 않는 단점이 있습니다.
.
.
.
그래서 이번에는 이 단점을 해결할수 있는 로컬 알림에 대해 알아보겠습니다.
로컬 알림이란?
- 로컬 알림은 앱 내부에서 만든 특정 메시지를 iOS 알림 센터를 통해 전달하는 방법입니다.
- alert와 다르게 앱이 종료되었거나 백그라운드 상태일 때에도 알림 메시지를 전달할 수 있는 특징이 있습니다.
- 앱 내부에서 사용자에게 보여줄 메시지를 미리 구성하고 발송될 시각을 iOS 스케줄러에 등록을 해놓으면 자동으로 발송이 되는 형식입니다.
- 로컬 알림을 구현할 때 작업은 뷰 컨트롤러가 아닌 앱 델리게이트 클래스 또는 씬 델리게이트 클래스에서 하고 있습니다.
그 이유는 앱의 라이플 사이클과 관련하여 적절한 시점에 로컬 작업을 하는 것이 많기 때문입니다.
- 앱 델리게이트에서는 사용자에게 알림 권한 허용을 받기 위한 것을 설정해줍니다.
- 씬 델리게이트에서는 앱이 백그라운드에 일때와 같이 특정 생명주기일 때 호출하는 메서드를 구현해주려고 하고 있습니다.
- 알림 센터에 표시된 로컬 알림 메시지를 클릭을 하면 앱을 실행시키고 원하는 기능을 구현해서 특정화면으로 이동하게 처리를 할 수 있습니다.
( 실제 앱들 중에서 알림 오는 것을 클릭하면 해당 관련 화면으로 가는 것을 많이 보셨을 겁니다. :) )
※ 알림 센터란?
- 위 사진과 같이 핸드폰을 위에서 아래로 스와이프 했을 때 나오는 화면으로 일반 알람을 지우지 않는 이상 알림 센터에 표시가 되어있습니다.
그럼 로컬 알림을 언제 어떤 상황에서 사용하는 게 좋을까요?
- 로컬 알림은 앱을 종료할 때 또는 백그라운드에 진입했을 때, 사용자한테서 관심이 멀어질 때 환기시키는 목적으로 사용하는 것이 좋습니다.
( 그렇지 않은 경우에는 메시지인 UIAlertController을 사용하는 게 좋습니다. )
- iOS에서 기본적으로 제공하는 미리 알림 앱 같이 개인 일정을 관리하는 스케줄링할 때도 많이 사용합니다. 여기에 로컬 알림을 등록을 하면 등록해놓은 일정, 시간에 맞춰 알림 메시지가 뜨는 역할을 합니다.
로컬 알림의 장점
- 특정 시각에 뭔가 알려주고 처리할 때 로컬 알림을 사용하는데 iOS 시스템의 스케줄러에 등록만 하면 관리를 따로 하지 않아도 되고 해당 시간에 알아서 메시지를 보내주기 때문에 편리한 면이 있습니다.
- 로컬 알림을 처리하는 iOS 이전의 버전에는 UIKit 프레임워크에 정의된 객체 UILocalNotification으로 로컬 알림을 사용했고 iOS 10 이후 부터는 UserNotification 프레임워크를 이용하여 로컬알림을 사용했습니다.
그럼 이제 UserNotification 프레임워크를 이용한 로컬 알림에 대해 살펴보겠습니다.
UserNotification 프레임워크를 이용한 로컬알림
- 이 프레임워크는 iOS 10 버전 이후부터 사용할 수 있는 로컬 알림 전용 프레임워크입니다.
- User와 Notification의 철자를 따 UN접두어를 사용하여 객체 이름을 정의합니다. 따라서 만약 UN***으로 사직하는 객체를 보면 아 이것은 로컬 알림 객체구나 라고 생각하시면 됩니다. :)
- 알림 관련 객체는 로컬 알림과 서버알림으로 나누어져 있는데 UserNotification 프레임워크에서 로컬알림과 서버 알림의 차이는 단순하게 구분 값에 지나치지 않고 통합적으로 구현이 가능합니다.
- UserNotification 프레임워크를 사용하려면 기본적으로 이 프레임워크의 반입 구문을 추가해주어야 합니다.
import UserNotification
※ UserNotification 프레임워크에서 중요하게 봐야 할 객체는 다음 4가지가 있습니다.
객체 | 역할 |
UNMutableNotificationContent | 알림 콘텐츠 |
UNTimeIntervalNotificationTrigger | 알림 발송 조건 |
UNNotificationRequest | 알림 요청 |
UNUserNotificationCenter | 알림 발송 담당 센터 |
* 각 객체 설명
- UNMutableNotificationContent
- 알림에 필요한 메시지와 같은 기본적인 속성을 담는 알림 콘텐츠 역할을 합니다.
- 로컬 알림 메시지 창에서 타이틀, 서브타이틀, 바디 및 알림 메시지를 설정합니다.
- 앱 아이콘에 표시할 배지나 사운드 설정도 모두 이 객체를 통해 설정합니다. - UNTimeIntervalNotificationTrigger
- 알림 발송 조건을 관리합니다.
- 발생 시각, 반송 여부를 설정할 수 있습니다.
- 몇 분 후 같이 간격을 설정하여 알림 메시지를 발송할 수 있습니다. 여기서 입력값은 초단위입니다.
- 특정한 시간에 맞추어 알림 메시지를 전송하고 싶으면 UNCalendarNotificationTrigger객체를 사용하면 됩니다. - UNNotificationRequest
- 알림 콘텐츠와 알림 발생조건을 모두 설정했으면 이것을 모아 알림 요청 객체를 만드는 클래스입니다.
- 알림 콘텐츠 객체와 알림 발송 조건 객체를 인자 값으로 클래스를 초기화하면 설정해준 조건의 알림 요청 객체가 생성됩니다. - UNUserNotificationCenter
- 실제 발송을 담당하는 센터입니다.
- 등록된 알림 내용을 확인하고 정해진 시각에 발송하는 역할을 합니다.
- 이 객체는 싱글톤이므로 인스턴스를 생성하지 않고 시스템에 의해 생성된 인스턴스를 가져오기 위해 current( ) 메서드를 사용합니다.
- UNNotificationRequest객체를 UNUSerNotificationCenter::add(_:) 메서드를 이용해서 해당 객체에 추가해주면 알림 등록과정이 모두 완료가 됩니다.
※ 로컬 알림을 간단하게 도식화
이번에는 로컬 알림에 대해 알아봤습니다. 간단하게 로컬 알림을 하는 과정을 간단하게 포스팅했습니다.
.
.
.
다음 포스팅에는 백그라운드에 갔을 시 5초 후에 로컬 알림이 뜨는 것을 포스팅해보겠습니다.
'IOS 시작기' 카테고리의 다른 글
[iOS] 받은 로컬알림 처리하기(UNUserNotificationCenterDelegate) - HoonIOS (0) | 2021.04.13 |
---|---|
[iOS] 로컬알림 구현하기 - HoonIOS (0) | 2021.04.13 |
[IOS] UIAlertController 응용하기 (텍스트 필드 추가) - HoonIOS (0) | 2021.04.12 |
[iOS] UIAlertController 응용하기 (버튼 클로저) - HoonIOS (0) | 2021.04.11 |
[iOS] 메시지창 알림 - UIAlertController - HoonIOS (0) | 2021.04.08 |