sookim-1

번호 : 009, 작성일자: 2024-04-01

2024.03.25 ~ 2024.03.31

📱 Xcode Preview 기능


Xcode에서 Preview기능을 활용하면 실제 기기 및 시뮬레이터를 사용하지 않고 최신 상태의 뷰 콘텐츠를 표시할 수 있어서 코드로 화면개발을 할 때 편리하다.

하지만, 실제 프로젝트에서 여러개의 라이브러리를 추가하고 빌드시간이 오래걸리는 프로젝트인 경우 오히려 실제기기를 빌드하는 게 더 빠른 경우도 있었기 때문에 해당 기능은 주로 빌드시간이 짧은 프로젝트의 경우 편리하다고 생각했다.

해당 기능은 주로 SwiftUI에서 자주 사용하고 UIKit에서 사용하는 방법이 존재하지만, 프로토콜을 채택해서 구현해서 추가해야되기 때문에 새로운 프로젝트를 생성할 때마다 코드를 추가해야하는 번거로움이 있었다.

iOS17이상부터 Swift Macro기능을 활용해서 굉장히 간단하게 UIKit에서도 사용할 수 있어서 블로그에 정리를 해보았다.

😅 systemLayoutSizeFitting


UITableView의 Footer가 status별로 변경되는 경우 Footer의 높이를 유동적으로 변경해야 한다. 따라서 systemLayoutSizeFitting(_:withHorizontalFittingPriority:verticalFittingPriority:)를 사용하여 최적크기를 반환하는 메서드를 사용하여 높이를 구하였는데 컨텐츠영역이 짤리는 이슈가 발생했다.

이유는 targetSize만 지정된 경우에도 최적크기를 구할 수는 있지만, 좀 더 targetSize에 정확한 크기를 얻기 위해 수직제약조건의 파라미터의 값을 설정함으로써 정확한 크기를 반환했다.

🔔 Notification Sevice Extension


기본적으로 iOS에서는 Remote Notification을 표시하기 위해서는 APNs를 거쳐서 Push를 전달받을 수 있다.

따라서 APNs에 전송할 때 payload에 필요한 설정 및 정보들을 전달하게 된다.

알림 종류별로 그룹화하고 새 알림이 온다면 이전 알림들을 제거하는 기능을 구현해보고 싶어서 Extension을 활용하면 적용할 수 있는지 확인해보았지만, 서버에서 데이터를 전달할 때 payload설정을 통해서만 가능한 작업이였다.

해당 내용을 알게되면서 Service Extension으로 활용할 수 있는 작업에 대해서 알아보았다.

  • 원격알림의 내용을 수정할 수 있는 경우
    • 암호화된 형식으로 전송된 데이터의 암호를 해독합니다.
    • 크기가 최대 페이로드 크기를 초과하는 이미지 또는 기타 미디어 첨부 파일을 다운로드합니다.
    • 사용자 기기의 데이터를 통합하여 알림의 내용을 업데이트합니다.

요약하자면 alert에 전달된 내용을 변경하는 기능을 담당한다. (텍스트 변경 및 이미지 추가)

🙋🏻‍♂️ 기타 사항


  1. 블로그에 올리는 글을 제외한 모든 글들을 개인 Notion에 정리 중인데 Notion계정이 학생인증으로 인해 네이버이메일로 되어있어서 이제 더 이상 사용할 이유가 없어져서 지메일로 옮기기 위해 모든 페이지를 옮기는 작업을 진행했다. 또한, 페이지들을 관리하기 편하기위해 Notion의 데이터베이스기능을 활용하여 나만의 템플릿을 지정하여 정리하였다.
  2. 현대카드 iOS앱을 보았는데 카드형식으로 넘기는 UI가 있어서 구현하는 방법을 살펴보았다. 관련된 라이브러리 중 VerticalCardSwiper라는 라이브러리가 있었다. 해당 라이브러리의 코드를 보고 어떻게 구현했는지 살펴보았다.
  3. 금융 및 카드앱에서 백그라운드로 가는 경우 앱의 화면이 가려지는 경우가 있어서 어떻게 구현했는 지 보았는데 App Switcher 상태라고 하는 상태가 있어서 아이폰에서 앱을 들어올린 경우에 대해서 정의한 상태였다.
태그: