티스토리 뷰
UILocalNotification => UserNotifications (iOS 10~)
UN으로 시작하는 객체들은 알람처리를 위한 객체
1. UNMutableNotificationContent : 알람 메세지 설정 같은거
2. UNTimeIntervalNotificationTrigger : 몇분 후 ~
3. UNNotificationRequest : 1와 2를 모아서 알람 객체 만들 때.
4. UNUserNotificationCenter : 실제 발송 담당 - 싱글톤이므로 인스턴스 생성X
[AppDelegate.swift에 작성하기]
1) import UserNotifications
2) UNUserNoficationCenter.current()로 시스템에서 제공하는 인스턴스 받아오기
3) .getNotificationSettings로 동의했는지 확인하기
4) 클로저에서 { settings in 으로 후속 처리 해주기
if settings.authorizationStatus == .authorized { }
else { }
5) UNMutableNotificationContent 객체 만들어서 알람 내용 집어넣기
let nContent = UNMutableNotificationContent( )
nContent.badge = 1
nContent.title = "로컬 알람 메세지"
nContent.subtitle = "앱을 다시 여세요"
nContent.sound = UNNotificationSound.default
nContent.userInfo = ["name": "어쩌고"]
-> userInfo를 통해서 알람을 눌러서 연결되는 앱 델리게이트에서 참조 가능
6) 알림 발송 시간 설정하기
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
// 5초 뒤에 알람 온다
// 하루중 특정 시각에 알람 보내고 싶으면 UNCalendarNotificationTrigger 객체 사용
7) UNNotificationRequest 만들어주기
let request = UNNotificationRequest(identifier: "wakeup", content: nContent, trigger: trigger)
// identifier은 여러개의 알람 중에 원하는걸 식별하는 용도로 쓰인다
8) 알람요청 객체를 노티피케이션 센터에 추가
================================
알람메세지 클릭해서 앱 실행 시켰을때,
그냥 앱이 켜지는게 아니라 특정 화면이 켜져야 할 때가 있다.
이걸 위해서 UserNotification에서는 'delegate pattern'을 제공한다.
1) AppDelegate.swift에 UserNotifications import 해준다
2) UNUserNotificationCenterDelegate를 AppDelegate에서 채택해준다
3) didFinishLaunchingWithOptions 메소드의 if #available 조건에
notiCenter.delegate = self를 추가해준다
4) 앱 실행 도중 알람메시지가 도착하면 userNotificationCenter(_:willPresent:withCompletionHandler:) 메소드 자동으로 호출된다.
5) 사용자가 알림메시지를 실제로 클릭하면 userNotificationCenter(_:didReceive:withCompletionHandler:) 자동으로 호출된다.
'macOS, iOS' 카테고리의 다른 글
[iOS] DispatchQueue.main.async { (0) | 2019.09.02 |
---|---|
[iOS] 앱이 비활성화 되는 경우 (홈버튼 눌렀을 때/ 전화/SMS시 ) 실행되는 코드 (0) | 2019.08.29 |
[iOS] alert에 text field 추가하는 법 (0) | 2019.08.28 |
[iOS] UIAlertAction handler (0) | 2019.08.28 |
[XCode] API 문서 보는 단축키 (0) | 2019.08.27 |