iOS 개발일지
0729 새싹 20회차 정리 본문
iOS 앱 개발자 데뷔 과정 20회차
#1. Checklist
- Local Notification
Notification은 원격과 로컬 두 종류가 있는데, 개인 어플의 경우에는 로컬을 많이 사용한다.
Notification의 구현은 아래와 같은 순서로 이뤄진다.
1. UNUserNotificationCenter.current의 인스턴스 생성
2. 권한 요청
: 권한을 허용해야 알림이 온다.
: 권한 허용 문구는 시스템적으로 최초 한 번만 뜬다.
: 허용이 안 된 경우 애플 설정으로 직접 유도하는 코드를 구성해야 한다,
3. 권한을 허용한 사용자에게 알림 요청
: Identifier가 한개라면 알림이 쌓이지 않고 교체되는데, 이럴 때 Date()를 사용하면 잘 겹치지 않기 때문에 유용하다.
여기까지만 해도 알림은 어느정도 구현되었지만, 이 외에도 고려할 수 있는 사항들이 더 있다.
1. 뱃지 제거
: 앱 아이콘 위에 표시한 뱃지를, 앱에 들어갔을 때 지워주고 싶다면 SceneDelegate에서 구현한다.
: sceneDidBecomeActive는 앱이 액티브 상태가 되었을 때 호출되는 함수이므로 앱이 켜졌을 때 지우기에 적합하다.
: sceneWillEnterForeground도 비슷한 역할을 하지만 Foreground 메서드는 상황에 따라 호출되지 않을 수 있다.
2. 노티 제거
: 노티 제거는 AppDelegate의 application에서 구현한다.
: removeAllDeliveredNotifications() 메서드는 올라와있는 모든 알림을 제거한다.
: removeAllPendingNotificationRequests() 메서드는 예정되어 있는 미래의 알림까지 제거할 수 있다.
3. 포그라운드 수신
: 아무런 설정을 해주지 않는다면, 앱이 foreground 상태일 때에는 알림이 오지 않는다.
: 따라서 노티 제거와 마찬가지로 AppDelegate의 application에서 구현할 수 있다.
- Custom Font
시스템 폰트가 아닌 커스텀 폰트를 사용하면 더 예쁜 디자인을 보여줄 수 있지만, 아래와 같은 것들을 신경써야 한다.
1. 저작권
2. 내장(otf, ttf) 파일 크기
3. info.plist 폰트 등록
1, 2번은 나중에 신경써도 될 사항이니, 오늘은 어떻게 info.plist에 폰트를 등록하는지에 대해 알아보자
눈누 : https://noonnu.cc
위에서 다운받은 폰트를 직접 Xcode에 추가한다.
프로젝트에 새 그룹을 만들고 다운받은 폰트를 드래그해서 넣으면 위와 같은 창이 나타난다.
여기서 Add to targets를 체크해줘야 하는데, 깜빡하고 체크하지 못한 경우에는 뒤의 화면에서 수동으로 추가해주면 된다.
그리고 Information Property List에 Fonts provided by application을 추가한다.
화살표를 아래로 내린 후에 다운받은 폰트 파일의 갯수대로 Item을 추가하고, Value에 파일 이름을 입력한다.
이제 추가한 폰트의 시스템 이름을 찾아야 하는데, 파일 이름과 항상 같지 않기 때문에 번거롭다.
viewDidLoad에 아래처럼 2중 반복문을 돌리면, 디버그창에 출력되는 결과로 폰트를 찾을 수 있다.
#2. Assignment
- UITextView- dataDetectorTypes 프로퍼티
UITextView에는 dataDetectorTypes라는 프로퍼티가 존재한다.
이 프로퍼티를 이용하면 텍스트 기반 콘텐츠에서 특정 정보 유형(phoneNumber, link, address, calendarEvent, shipmentTrackingNumber, flightNumber, lookupSuggestion, all)을 감지할 수 있다.
- NSTextAttachment 클래스
텍스트 컨텐츠의 다양한 부분과 관련된 속성(예: 비쥬얼 스타일, 하이퍼 링크, 접근성 데이터)도 포함하는 변경 가능한 문자열 객체
기본적으로는 UILabel에 이미지를 보여줄 수 없지만, 이 NSTextAttachment를 이용하면 Lebel에 이미지를 넣을 수 있다.
# 그 외
- 문자 인증번호 받아오기
numberTextField.textContentType = .oneTimeCode
'SeSAC iOS 데뷔과정 2기' 카테고리의 다른 글
0801 새싹 21회차 정리 (0) | 2022.08.01 |
---|---|
0731 1차 평가과제 개선점 (4주차) (0) | 2022.07.31 |
0728 새싹 19회차 정리 (0) | 2022.07.28 |
0727 새싹 18회차 정리 (0) | 2022.07.27 |
0726 새싹 17회차 정리 (0) | 2022.07.26 |