728x90

iOS 29

Signing xcframework

안녕하세요. 이번엔 xcframework를 signing(서명)하는 것이 뭔지, 또 하는 방법에 대해 알아볼게요. # Signing? xcframework를 서명한다는 것은 누가 framework를 개발하고 배포했으며 서명한 이후에 framework가 변경되지 않았음을 증명하는 것입니다. # xcframework signing(서명) 방법 아래 명령어로 xcframework를 서명할 수 있어요. codesign --timestamp -s 예를 들어서, "Apple Distribution: Philip Chung (xxx)"란 인증서로 MyFramework.xcframework를 서명하고 싶으면 이렇게 쓰면 됩니다. codesign --timestamp -s "Apple Distribution: Phili..

iOS 2023.08.14

iOS 16.4에서 WebView Inspector 사용하기

안녕하세요. 저는 모바일 웹뷰 기능 개발할 때, WebView Inspector 기능을 자주 사용합니다. 잘 사용하던 중에 어느 순간부터 No Inspectable Applications 라고 뜨더라구요.. 요거 해결방법을 찾았습니다ㅎㅎ 찾아보니, WebKit에서 iOS 16.4 이후부터 WebView Inspector를 사용할지 말지에 대해 사용자가 옵션 설정을 하도록 바뀌었습니다. 옵션의 이름은 isInspectable 이고, default 값은 false 입니다. 즉, 아무 설정을 하지 않은 WKWebView는 WebView Inspector를 사용할 수 없다는 것이죠. 아래처럼 isInspectable를 true로 설정해 주면, WebView Inspector를 쓸 수 있게 됩니다ㅎㅎ (isIns..

iOS 2023.07.08

Moya timeout 설정하기

안녕하세요. 이번에는 Moya에 timeout 설정하는 방법 공유드리려고 합니다. (Moya 15.0.0를 기준으로 Moya가 제공하는 GitHub API 예시를 활용할게요.) timeout 설정을 해주고 싶으면 MoyaProvider의 requestClosure 인자를 활용하면 됩니다. 아래 코드를 참고해 주세요! 끝! # 참고 - https://github.com/Moya/Moya/tree/15.0.0 GitHub - Moya/Moya: Network abstraction layer written in Swift. Network abstraction layer written in Swift. Contribute to Moya/Moya development by creating an account o..

iOS 2023.05.02

Moya async API 추가하기

안녕하세요. 요즘 Moya라는 네트워크 통신 모듈을 사용하고 있습니다. Moya는 다 편한데, async-await API가 없어서 직접 만들어봤습니다ㅎㅎ # 추가 Extension 아래 코드만 추가해 주시면 됩니다. # 예시 Moya는 기본적으로 아래처럼 callback 형태로 응답값을 받는데요. 위에서 공유드린 Extension을 추가한다면, async-await 구문을 사용할 수 있게 됩니다. 이번 글은 여기서 마무리.

iOS 2023.04.11

앱 이름 현지화(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