티스토리 뷰

TIL

[TIL] 2022 / 07 / 29

희철 2022. 7. 30. 00:47

User Notification Framework

 

 

사용자의 디바이스에 앱의 알림을 표시하는 기능이 담긴 프레임워크

 

알림과 함께 소리를 재생할 수 있고, 뱃지를 지정할 수 있음.

 

알림이 표시되기 위해서는 반드시 사용자가 권한을 허용해야함.

이런 화면을 본 적이 있을텐데, 여기서 허용하지않으면 알림이 뜨지 않음.

 

서버와 앱 내부에서 알림을 전달할 수 있음

-> Local Notificatioin과 Remote Notification

 

 

 

Local Notification

 

 

앱 내부에서 디바이스에 알림을 전달하는 방법

 

서버에서 알림을 생성해서 만드는 것이 아니기때문에 보통 비슷한 시간에 비슷한 내용으로 알림이 전달됨.

예) 매일 저녁 9시에 일기를 쓰라는 알림.

 

무료 개발자 계정에서도 구현 가능.

 

 

 

Remote Notification

 

 

서버에서 디바이스에 알림을 전달하는 방법

 

서버에서 데이터를 구성하여 전송하는 형태이므로 Local과 달리 일정하지 않은 시간에 다양한 알림이 전달됨.

예) 광고, 채팅 등

 

APNS라는 애플의 알림 서버를 통해 디바이스에 전달되는 구조이기때문에 반드시 유료 개발자 계정 필요.

-> 따라서 시뮬레이터에서도 테스트 불가능.

 

 

 

Local Notification 구현해보기

(유료 개발자 계정없음 지금)

 

 

1. 권한을 요청해야함.

UNAuthorizationOptions를 이용해 알림에서 사용할 옵션을 정해줌.

 

notification은 이미 위에서 선언된 인스턴스임.

let notificationCenter = UNUserNotificationCenter.current()

 

클로저를 이용해 성공한 경우에만 sendNotification 함수를 호출함.

 

위의 request함수를 viewDidLoad에서 호출하면 앱이 처음 실행됐을때 허용할거냐고 물어볼거임.

 

 

2. 알림 요청

 

전달할 정보, 전달할 시간을 갖고 있어야함.

 

전달할 정보를 관장하는 UNMutableNotificationContent인스턴스를 만들어줌.

let notificationContent = UNMutableNotificationContent()

 

아래의 코드처럼 title, subtitle, body, badge등의 정보를 입력해줌.

notificationContent.title = "다마고치를 키워보세요."
notificationContent.subtitle = "오늘 행운의 숫자는 \(Int.random(in: 1...100))"
notificationContent.body = "저는 따끔따끔 다마고치입니다. 배고파요."
notificationContent.badge = 40

 

다음으로 알림 트리거를 설정해야함.

 

세 가지가 있음.

 

1) 시간 간격

- 반복적으로 알림을 뜨게 하려면 최소 timeInterval이 60초 이상.

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 3, repeats: false)

 

2) 캘린더

- 시간이나 날짜를 정할 수 있음. 

예를 들어, 매년 4월 20일이나 매일 오후 4시

var dateComponents = DateComponents()
dateComponents.minute = 15
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)

위의 코드는 15분에 알림을 보내는 것.(1시 15분, 2시 15분...)

 

3) 위치 기반

 

UNLocationNotificationTrigger를 이용하면됨.

 

 

3. 로컬 알림을 예약 요청

let request = UNNotificationRequest(identifier: "\(Date())", content: notificationContent, trigger: trigger)
        
//ios시스템에 전달해달라는 의미
notificationCenter.add(request) // completion사용해도됨.

identifier가 같다면 이전의 알림이 사라지고 생성되며, 다르다면 알림이 스택형태로 쌓이게 됨.

 

 

 

커스텀 폰트 사용하기

 

 

폰트 자체의 용량도 앱의 용량에 영향을 미치므로 작은 앱에 너무 큰 용량의 폰트를 적용하면 비효율적

 

채팅같은 앱에 폰트를 사용하지않는 이유

-> 만약 이상한 꿻같은 글자를 쓴다면 적용이안돼서 안보일 가능성도 있음.

 

 

먼저, .otf나 .ttf파일을 프로젝트에 임베드

 

다음으로 info.plist에 사용할 폰트 파일 등록.

 

넣을때 Destination, Create groups, Add to target 확인해야함.

 

이제 UIFont(name: "")에 폰트의 이름을 입력하면 됨.

 

'TIL' 카테고리의 다른 글

[TIL] 2022 / 07 / 31  (0) 2022.07.31
[TIL] 2022 / 07 / 30  (0) 2022.07.30
[TIL] 2022 / 07 / 28  (0) 2022.07.28
[TIL] 2022 / 07 / 27  (0) 2022.07.27
[TIL] 2022 / 07 / 26  (0) 2022.07.26
댓글
최근에 올라온 글
Total
Today
Yesterday