ios
-
iOS - syntactic sugar, 편의 코드, 슈가 코드 모음ios 2024. 4. 22. 12:31
배열 index out of range 방지// 배열 index out of range 방지extension Array { subscript (safe index: Int) -> Element? { return indices ~= index ? self[index] : nil // return indices.contains(index) ? self[index] : nil // return startIndex 배열 가장 앞에 요소 추가// 배열 가장 앞에 요소 추가extension Array { mutating func prepend(_ newElement: Element) { insert(newElemen..
-
Xcode 15.3 issue - Invalid Bundle, app archive validation failios 2024. 3. 27. 15:04
앱 배포를 위한 아카이브 도중, 밸리데이션 오류가 발생했다. Xcode 15.3 (15E204a) 버전에서 앱 아카이브 시 info plist, deployment target 관련 문제로 아래와 같은 에러가 발생한다. - Asset validation failed (90208) Invalid Bundle. The bundle ~.framework does not support the minimum OS Version specified in the Info.plist. - Asset validation failed Invalid Bundle. The bundle ~.framework does not support the minimum OS Version specified in the Info.plist...
-
Privacy Manifestios 2023. 12. 11. 14:09
WWDC23 에서 Privacy manifest 에 대한 소개가 있었다. 사용자 개인정보 보호를 위해 앱이 어떤 데이터를 수집하고 사용하며 관리하는 지를 명시하도록 하며, 이러한 내용을 Privacy Manifest 라는 파일에 정의하면 된다는 내용이다. 중요한 점은 2024년 봄부터 이러한 개인정보 명시를 준수해야 할 것이고, 앱에서 사용하는 써드 파티 라이브러리 들도 신경을 써야 한다는 것이다. Starting in spring 2024, you must include the privacy manifest for any SDK listed below when you submit new apps in App Store Connect that include those SDKs, or when you su..
-
스토리보드 커스텀 폰트 이슈 - Xcode15ios 2023. 10. 23. 10:17
Xcode 15 버전이 출시가 되었다. 그런데 앱을 실행하면 스토리보드(interface builder) 에서 설정한 폰트와 다른 폰트가 설정되어 보여지는 이슈가 있다. Interface Builder documents using custom App fonts may load incorrect font at runtime. (113624207) (FB12903371)Workaround: Set font manually in code. 릴리즈 노트에선 이와 같이 말하고 있으며, 아래의 포럼 링크를 보면 많은 사람들이 당황한 듯 싶다. https://developer.apple.com/forums/thread/735377 포럼 의견 중에, '아마 interface builder 방식이 legacy 기술로 간..
-
iOS - SNS 간편 로그인 (네이버 간편 로그인, 네아로) 심사 리젝 rejectios 2023. 5. 22. 10:46
SNS 통한 간편 로그인을 지원하고 있는데, 네아로의 경우 네이버 앱이 없을 시 앱스토어에서 네이버앱을 설치 받도록 유도했다. 그런데 심사 측은 네이버 앱이 미설치된 사용자도 간편 로그인이 되야 한다고 리젝 했다. 네이버 앱 미설치 사용자도 추가적인 앱 설치 없이 간편 로그인이 가능하도록 변경해보자.. NaverThirdPartyLoginConnection.getSharedInstance().isNaverAppOauthEnable = true NaverThirdPartyLoginConnection.getSharedInstance().isInAppOauthEnable = true InAppOauth 인증 방식 활성화 하고, 미 설치 시 앱스토어 이동이 아닌 인증 요청하도록 변경.
-
iOS - 접근성, Voice over, custom UIAccessibilityElementios 2023. 3. 15. 12:20
iOS 앱 접근성 관련 작업을 하게 됐다. voice over 기능 사용 중에 한하여, element에 포커스와 탭 이벤트 발생 시 별도의 기능을 구현하고자 했다. View의 accessibilityElements에 accessibilityCustomActions 을 설정해 해결하고자 했지만, 아래와 같은 문제를 만났다. - custom action의 존재 유무가 voice over로 잘 나타나지 않았다. - custom action을 사용하기 위해, 포커스가 해당 element로 이동 후, '한 손가락으로 아래 스와이프' 후 더블탭을 해야했다. 결국 유저 입장에서 custom action 안내를 받지 못하며, 사용을 위해 추가 동작까지 필요했다. 하여 UIAccessiblityElement를 상속하는 ..
-
Swift / iOS앱 Tuist 적용기ios 2023. 2. 22. 15:38
배경 협업 시 간혹 발생하던 conflict 해결과 장기 목표였던 모듈화를 위해, 프로젝트 관리 도구가 필요했다. 단계 - 현 프로젝트 설정값 xcconfig로 추출 - 오픈 소스 의존성 관리 도구 이전 AS-IS) CocoaPods TO-BE) Swift Package Manager - 프로젝트 Tuist 적용 후기 기본적으로 알아야 하는 것이 많아 러닝 커브가 높은 편이었다. "It defines not only the source files to include and how to build them, but the app's dependencies, entitlements, build settings, and everything needed to take the project from sources..
-
Compositional Layout, Unable to simultaneously satisfy constraints.ios 2022. 11. 27. 18:26
Autolayout issue with Compositonal Layout collectionview compositional layout with estimated height not working Compositional Layout을 사용해 CollectionView를 구성하던 중, [LayoutConstraints] Unable to simultaneously satisfy constraints. 에러가 발생해 작성 NSCollectionLayoutSize의 heightDimension에 .estimated(100) 이 원인인 이슈로 보인다. 해결 방법 1. set the same height dimension to both the item and the group. - 나의 경우엔 item, g..