본문 바로가기

iOS21

빌드 환경 분리 - Xcode 이전까지는 빌드 환경에 대해서 딱히 고려하지 않았다. 필요성을 느낀 이유는 출시한 앱이 구글광고를 포함하고 있기 때문에, 개발환경에서는 해당 구글광고 유료 ID를 이용하면 안된다. ( 예전에 실수로 개발하다가 계속 유료 ID쓰면서 테스트했더니 구글로부터 경고 먹었었다. ) 그래서 개발할 때는 테스트 광고 ID를 사용하고, 출시할 때는 유료 ID로 변경해서 배포해야한다. 이걸 매번 수동적으로 하자니 불편함이 있고, 또 실수로 깜빡하는 경우도 생긴다. 그러면 또 다시 아카이브, 제출...하는 귀찮음이 발생한다. 지금까지 참고 오다가, 이번에 자동배포를 Fastlane을 적용해보면서, 자동화에 대해 관심이 생겼고, 광고ID도 자동으로 변경됐으면 하는 생각이 들었다. 내가 기대하는 결과는 다음과 같다. 개발을 .. 2021. 9. 9.
Relationship을 가지는 CoreData를 json으로 변환하기 우선 다음과 같은 Entity 2개가 있고, 각 relationship을 갖고 있다라고 가정하자. 그래서 Human에 대한 데이터를 json으로 저장하고자 한다. 각 NSManagedObject를 extension하여 encdoable을 채택해준다. extension Human: Encodable{ enum CodingKeys: String, CodingKey { case name, age } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(name, forKey: .name) try container.encode(age,.. 2021. 9. 7.
fastlane 적용하여 앱스토어 배포까지! 목차 그동안 듣기만 했던 Fastlane을 드디어 적용해보기로 했다. fastlane은 iOS, Android 앱의 CD ( Continuous Deploy ) 의 대표적인 툴이다. CD는 지속적 배포로써, iOS에서는 자동화 배포( 앱스토어, testFlight에 ) 를 도와준다. 배포해본 사람은 알겠지만.. 배포하고 앱스토어에 제출하는 것 까지 꽤 시간이 걸리고, 그동안의 과정들이 한번에 진행되는게 아니라 계속 확인하면서 클릭 클릭 해주어야 한다. 하지만 fastlane을 이용한다면 일련의 과정들을 명령어 하나로만 실행하여 완료될때까지 신경쓰지 않아도 된다! 크게, Fastlane을 설치하고, Fastlane 설정, testflight에 배포 app store에 배포 하는 방법등을 알아볼 예정이다. .. 2021. 9. 5.
iOS 사진 라이브러리 접근에 필요한 권한 나는 지금까지 무조건 사진 라이브러리 ( 사용자의 사진첩 ) 에 접근하기 위해서는 권한이 필요한 줄 알았다. 하지만, 단순히 접근해서 읽기만 하는 경우에는 명시적으로 권한을 요청할 필요가 없다. 만약 사진을 읽어와서 편집하여 사용자의 사진 라이브러리에 덮어씌우거나, 또는 사진 라이브러리에 저장하는 경우에는 권한이 필요하다. ( 다양한 글들에 그러한 내용을 발견할 수 있었는데, 공식문서에서도 확인할 수 있었다. ) 우선, iOS 14부터는 PHPickerViewController가 등장했는데, UIImagePickerController를 대체하는 새로운 picker다. 사진첩과 같은 인터페이스를 제공하면서, 멀티플 샐랙션을 제공한다. 여튼, 사진을 단순히 읽어오거나, 인터넷이나 이메일에 포함시키는 경우에는.. 2021. 9. 3.
앱 미리보기 지원하기 - 앱스토어 앱 미리보기는 스크린샷과는 다르게 동영상을 보여주는 것이다. 이를 가능하게 하기 위해서는 핵심부분들은.. 1. 동영상의 해상도가 지원하는 사양에 맞는 해상도와 같아야 한다. 2. 또한 확장자도 고려해야한다. 3. 또 가장 중요한, 최소 15초이상 최대 30초 이하이여야 한다. 4. 그리고 최대 30프레임이여야 한다. ( + 그리고 오디오가 포함되어 있어야하는 듯..? ) 앱 미리보기 지원사양은 아래에 나타나있다. https://help.apple.com/app-store-connect/#/dev4e413fcb8 가장 중요한건 해상도가 맞아야하는데.. 동영상 편집이나 이런걸 한번도 해본적이 없어서 그런 프로그램들이 없었고, 나름 찾아본 결과 무료로 간단하게 해상도를 바꿀 수 있는 프로그램을 찾았다. Ada.. 2021. 9. 2.
커스텀 폰트 용량 줄이기 - iOS 기존의 출시한 앱이 굉장히 앱 사이즈가 컸다 그때 당시에는 신경을 안썼었다. ( 신경 쓸 생각조차 나지 않았었다 ) 하지만 어느 순간 부터 메모리용량도 신경쓰게 됐고, 문득 내 앱을 보니 무슨.. 엄청난 어플도 아닌데 100MB 가까이 차지하고 있었다. 지금 계속해서 리팩토링 중인데 굳이 사용하지 않아도 되는 외부 라이브러리를 삭제하고, 필요없는 코드들도 최대한 줄이고 있는데, 꽤 많이 줄어들었다. ( 코드도 약 천오백줄 줄일 수 있었다 ) 그리고 대망의 폰트가 남아있었다 특히 서울한강체는 하나당 10MB나 차지한다! 내 앱은 그외 두개 더 추가적으로 사용하고 있었는데 그녀석들은 하나당 1MB 정도 차지하고 있었다. 여튼 서울한강체는 버리던가 추가적인 조치가 무조건 필요해보였다. 찾아보니 웹사이트로 폰트.. 2021. 9. 1.
UICollectionView IndexPath 리팩토링 작년에 만들었던 앱을 리팩토링 하고 있다. 예전에는 왜 그렇게 짰는지.. 이해할 수 없는 건 아니지만 ㅎㅎ 리팩토링 하는 입장에서는 힘들다. 기존 뷰컨트롤러를 작성한 구조도 그렇고, 뷰 구성도 마음에 안 들어서 아예 새롭게 뷰 컨트롤러를 만들어서 작성했다. ( 그래도 신기한건 리팩토링 할 처음 당시에는 그렇게 기존 코드를 보기 싫었는데, 다 완성할 때쯤에는 이제 눈에 어느 정도 익혀졌다는 게 신기하다. ) 그 과정에서 CollectionView를 사용하게 되었고, 하다보니, section의 수가 7개가 되었다. cellForItemAt과 같은 메서드나, numberOfItemInSection과 같이, indexPath를 통해 구분하여 각각에 맞는 cell 또는 헤더, 푸터 뷰를 제공해야 한다. 어느 정도.. 2021. 8. 28.
RxSwift, RxCocoa 정리 우선.. 곰튀김님의 RxSwift 3시간 강의연상 정말 추천합니다. ( 저도 지인분을 통해서 추천받고 들었는데 정말 대박입니다 👍 ) ( 왜 RxSwift가 필요하고, 왜 쓰이는지, 왜 그토록 많은 기업에서 사용하는지 이유를 알 수 있을 거에요! ) 곰튀김님 강의 영상 이 글은 곰튀김님의 강의 영상을 보면서 정리한 글 및 추가적으로 제가 RxSwift, RxCocoa를 사용하면서 제가 필요한 내용들만 적은 글입니다. RxSwift github https://github.com/ReactiveX/RxSwift GitHub - ReactiveX/RxSwift: Reactive Programming in Swift Reactive Programming in Swift. Contribute to Reactive.. 2021. 8. 18.