728x90

iOS 24

앱 이름 현지화(localization)하는 방법

안녕하세요. 앱 이름을 현지화(localization)하는 방법에 대해 알아볼게요. 영어일 땐 "My App", 한국어일 땐 "내 앱"이라고 앱 이름을 설정해 볼게요. command + n으로 Strings File 하나 만들어줍니다. 파일 이름은 꼭 InfoPlist.strings로 해주세요. 오른쪽 Inspector 영역에서 Localize 버튼을 눌러주세요. 프로젝트 타겟으로 가서 Info > Localizations에 한국어도 추가해 줄게요. Finish 버튼 클릭합니다. 위에서 생성한 InfoPlist.strings 파일을 보면 English, Korean 파일이 생긴 것까지 확인해 주세요ㅎㅎ 이제 각 파일에 앱 이름(Display Name)을 설정해 줄게요. InfoPlist.strings (..

iOS 2023.03.09

NSString, String 비교 방법 (Objective-C, Swift)

안녕하세요. 이번에는 Objective-C와 Swift에서 String 비교하는 방법에 대해 알아볼게요. # NSString 비교 (for Objective-C) NSString 비교 방법은 크게 2가지가 있습니다. == [NSString isEqualToString:] 결론부터 말씀드리자면 문자열 자체를 비교할 때는 [NSString isEqualToString:] method를 사용해야 합니다. 이렇게요. NSString *str1 = @"aaa"; NSString *str2 = @"aaa"; NSString *str3 = @"bbb"; NSLog(@"str1 and str2 are %@.", [str1 isEqualToString:str2] ? @"equal" : @"not equal"); NSLo..

iOS 2022.08.14

Apple Common Scheme List

안녕하세요. 애플이 사용하고 있는 Scheme List들이 뭐가 있는지 공식 사이트를 찾아보려고 했는데 잘 안보이더라구요.. 그래서 어떤 외국인 아저씨가 Scheme들을 정리해놓은 문서가 있어서 공유드리려고 해요. (제가 찾기 쉬우려고 남기는 것이기도 합니다...ㅎ...) ## 참고 https://medium.com/@contact.jmeyers/complete-list-of-ios-url-schemes-for-apple-apps-and-services-always-updated-800c64f450f Complete List of iOS URL Schemes for Apple Apps and Services (Always-Updated) The most exhaustive list of Apple iOS..

iOS 2022.08.04

Private Pod 배포 방법

안녕하세요. 이번에는 Library를 private pod으로 배포하는 방법에 대해 알아볼게요. 우선 Private Pod을 배포하기 위해서는 2가지 repository(저장소)가 필요합니다. - Pod Repo - Spec Repo Pod Repo는 배포할 Library 프로젝트 저장소를 의미합니다. Spec Repo는 Library를 배포하기 위한 podspec이 들어가 있는 저장소를 의미합니다. Public Pod 배포할 때는 Spec Repo라는 걸 따로 안 만들었는데, Private Pod 배포할 때는 왜 필요할까요?? Public Pod을 배포하는 경우라면, pod trunk push 명령어를 사용해서 podspec을 CocoaPods/Specs 저장소에 제출하고, (CocoaPods/Spec..

iOS 2022.06.01

SwiftUI <-> UIKit 이벤트 전달 방법

안녕하세요. UIKit에서 SwiftUI, 그리고 SwiftUI에서 UIKit로 이벤트를 전달하는 방법에 대해 알아볼게요. 전체 프로젝트는 여기에 업로드해두었으니 참고해주세요! 먼저, SwiftUI에서 UIKit으로 이벤트를 전달하는 코드를 직접 구현해보고 그 반대도 가볍게 알아볼게요ㅎㅎ 이벤트를 전달하는 방법에는 크게(그리고 가장 유명한..) 3가지 방법이 있을 것 같아요. Combine, ObservableObject Closure Notification 3가지 방법을 각각 사용해서, 아래 같은 화면(SwiftUI Button을 클릭해서 count를 증가시키고 UIKit Label의 text에는 count 값이 반영되는)을 만들어보는 연습을 해볼게요. # 1. SwifftUI -> UIKit으로 이벤..

iOS 2022.05.21

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