728x90

iOS 29

Logger, OSLogPrivacy

안녕하세요. 이번에는 iOS 14부터 추가된 Logger와 OSLogPrivacy에 대해 간단하게 알아볼게요. 만약 버그 제보를 받게 된다면, 무엇을 가장 먼저 해볼까요? 저라면 제보받은 상황을 똑같이 따라 해서 이슈가 재현되는지 제 눈으로 직접 확인해볼 것 같아요. 재현이 된다면 땡큐고.... 만약 재현이 안된다면?? 이런 경우는 상당히 난감합니다... 로그를 남기지 않았다면 말이죠. 로그를 통해서 앱이 정확하게 어떤 상황이고 어떤 특정 조건에 의해 이슈가 발생했는지 트랙킹 할 수 있기 때문에, 로그를 남기는 것은 서비스를 제공할 때 꼭 필요한 요소 중 하나예요. 애플은 로그를 쉽게 남길 수 있도록 Logger라는 구조체를 iOS 14부터 제공하고 있습니다. (물론 iOS 14 이전에는 os_log라는..

iOS 2022.05.02

[오픈소스] Inject

안녕하세요. 이번에는 UIKit, AppKit, SwiftUI 상관없이 Hot reloading을 지원하는 Inject라는 오픈소스에 대해 알아볼게요. 전체 프로젝트는 여기에 올려두었어요. # 1. Hot reloading? 우선 Hot reloading이란 무엇인지 알아야겠죠?? Hot reloading이란 소스코드가 변경되었을 때 앱 종료/재실행하는 것처럼 다시 컴파일하는 것이 아닌 실시간으로 실행 중인 앱에 수정내역이 반영되게 하는 기술을 말해요. (SwiftUI의 프리뷰 같은거라고 보면 될 것 같아요.) 앱을 다시 빌드하는데 시간도 줄이고, 앱 재실행하고 내가 원하는 화면으로 이동하는 시간까지 줄일 수 있으니 개발 시간이 매우 단축되겠죠??ㅎㅎㅎ # 2. Inject 즉, Inject를 사용한다는..

iOS 2022.04.12

Notification에 Action 버튼 추가하기

안녕하세요. 이번에는 Notification에 버튼 추가하는 방법(즉, Actionable Notification)에 대해 알아볼게요. # Overview Actionable Notification이란 아래 이미지처럼, Notification에 버튼을 추가한 것을 말합니다. 일반적인 Notification을 클릭하면 앱이 자동으로 실행되죠? 그런데 Actionable Notification을 클릭하면 앱이 background에서 실행되고 background에서 푸시 클릭 이벤트가 동작하게 됩니다! 이렇게 Actionable Notification을 사용하려면, 아래 사항을 준수해야 해요. 앱 launch time 때 하나 이상의 notification type을 선언 notification type에는 ..

iOS 2022.04.05

[오픈소스] Bagbutik

안녕하세요. 이번에는 Bagbutik라는 오픈소스를 직접 써보는 시간을 가져볼게요. # 1. Bagbutik? Generated Swift code for the App Store Connect API based on the official OpenAPI spec. Bagbitik은 OpenAPI 기반의 App Store Connect API를 위한 Swift 코드로 생성해준다. 한 마디로 App Store Connect API를 Swift로 호출해줄 수 있는 모듈인 것이죠. 그리고 Bagbutik의 가장 큰 장점은 Github Action을 활용해서 주기적으로 API 스펙을 확인하고, App Store Connect API 스펙이 변경되었을 때, Github Action이 자동으로 변경사항에 대해서 P..

iOS 2022.03.28

mailto scheme과 기본 메일 앱 설정

안녕하세요. 이번에는 mailto scheme으로 아이폰 Mail 앱이 아닌 타사 Mail 앱을 여는 방법에 대해 알아볼게요. 기존의 MFMailComposeViewController를 사용하면 iPhone 기본 앱인 Mail 앱을 열고 메일을 작성할 수 있었어요. 근데 문제가 하나 있는게.. "나는 Mail 앱 대신 Gmail을 위주로 사용해서 Mail 앱에 로그인이 안되어 있어ㅠㅠ" 하는 경우도 있었겠죠?? 예전 같은 경우에는 Mail 앱에 로그인이 되어 있지 않을 경우에는 MFMailComposeViewController에서 에러가 발생했어요ㅠㅠ 또한 Gmail, Outlook 같은 타사 앱을 사용할 수도 없었죠.. 그런데 iOS 14부턴 이러한 문제가 해결되었답니다!! iOS 14부터는 기본 메일..

iOS 2022.03.23

TabulaData framework

안녕하세요. 이번엔 iOS 15부터 새로 추가된 TabulaData 프레임워크에 대해 알아볼게요. # 1. TabulaData 프레임워크란? TabulaData 프레임워크란 무엇이냐 Import, organize, and prepare a table of data to train a machine learning model. 머신러닝을 위해 데이터 테이블을 import, organize, prepare 하는 것. TabulaData에서 말하는 데이터는 row, column으로 이루어진 테이블을 말해요. 그리고 TabulaData 프레임워크를 통해 그 데이터에서 유의미한 결과를 얻도록 가공하는 것이죠. # 2. DataFrame row와 column으로 이루어진 테이블을 DataFrame이라고 해요. 직접..

iOS 2022.03.09

[오픈소스] CustomDump 소개

안녕하세요. 이번에는 customDump라는 오픈소스를 소개해볼까 해요. # 1. CustomDump 소개 CustomDump의 소개글을 살펴볼게요. A collection of tools for debugging, diffing, and testing your application's data structures. CustomDump는 데이터 구조를 디버깅, diff 그리고 테스트하는 것에 특화된 API들이 있는 모듈이에요. 어떤 기능이 있는지 하나씩 살펴볼게요. ## 1.1 customDump Swift에는 print와는 별개로 디버깅을 위한 dump라는 함수가 있어요. 일단 print와 dump가 콘솔에 어떻게 찍히는지부터 볼게요. 아래 같이 Dictionary 변수가 있다고 할 때, let dic..

iOS 2022.02.24

Swift Package 의존성 추가, 생성, 배포 방법

안녕하세요. 이번에는 Swift Package Manager를 사용해서 dependency 추가하는 방법과, Swift Package를 직접 만들고 배포하는 방법에 대해 알아볼게요. # 1. Swift Package Manager로 패키지 설치 Swift Package Manager는 애플에서 제공하는 dependency manager입니다. (줄여서 SPM이라고도 부릅니다.) SPM으로 패키지를 어떻게 설치하고 관리하는지 알아볼게요. ## 1.1 dependency 추가 Xcode > 프로젝트 Target > Package Dependencies로 이동합니다. + 버튼을 클릭하면 패키지를 추가할 수 있는 화면이 나옵니다. 추가할 패키지의 repo URL을 입력하고 Add Package 버튼을 눌러주세요..

iOS 2022.02.24

SceneDelegate를 제거하는 방법

Xcode 11부터 iOS 프로젝트를 생성하면 기본적으로 SceneDelegate가 적용된 템플릿이 생성됩니다. 이번 글에서는 SceneDelegate를 사용하지 않도록 설정하는 방법에 대해 알아보겠습니다. #1 프로젝트 생성 iOS App으로 기본 프로젝트를 생성하면, SceneDelegate가 생성된 것을 볼 수 있습니다. Main.storyboard에 간단한 라벨을 추가하고 빌드 해봅시다. 기본 상태에서 잘 나오는 것을 확인했으니 이제 SceneDelegate를 제거하는 작업을 해봅시다. #2 SceneDelegate 제거 우선 제일 먼저 보이는 SceneDelegate.swift 파일을 삭제합니다. 그 이후에 AppDelegate.swift로 가서 UISceneSession Lifecycle을 지..

iOS 2022.02.05