iOS
-
특정 버전에 대한 분기 처리하기 (systemVersion)iOS 2023. 7. 13. 08:50
안녕하세요. 그린입니다 🍏 이번 포스팅에서는 특정 버전에 대한 분기처리하는 방법에 대해 알아보겠습니다 🙋🏻 일단 간단한 포스팅이 될 수도 있을것 같네요ㅎㅎ 분기 처리? 개발을 하다보면 버전 별로 코드를 다르게 동작시키는 경우가 종종 있습니다. iOS를 예를들어본다면 iOS 17에서부터 지원되는 Keyframe Animator의 사용을 하고 싶은 경우 현재 프로젝트의 미니멈 타겟은 만약 iOS 15라고 가정해볼께요. 그렇다면 우리는 특정 파일에서 해당 코드를 사용하기 위해 iOS 17 이상에서는 저 동작 그 밑에서는 요 동작 이렇게 분기 처리가 필요하죠? 자 이럴때 어떻게 처리하면 될까요? available 해당 속성을 이용해 버전을 체크하고 분기처리를 할 수 있습니다. 일단 간단하게 #available과..
-
오픈소스 라이센스 표시iOS 2023. 6. 19. 09:59
안녕하세요. 그린입니다🍏 이번 포스팅에서는 앱을 구성하면서 사용한 오픈소스 라이센스를 디바이스 해당 앱 설정에서 표시하는 방법에 대해 알아보겠습니다🙋🏻 앱에서 사용된 오픈소스를 사용하면서 라이센스 표시를 꼭 해줘야하는 경우가 있습니다. 이때 실제 해당 앱 내부에서 설정이나 마이페이지 같은 화면에서 표시해줄 수도 있고, 디바이스 > 설정 > 해당 앱에서 라이센스 정보를 표시해줄 수도 있습니다. 여기서는 후자인 디바이스 > 설정 > 해당 앱 정보에서 라이센스를 표시하는 방법을 다뤄보겠습니다🙌 LicensePlist 라이브러리 사용 우선 사용된 오픈소스 라이센스들의 정보를 추출해오기 위하여 아래 라이브러리를 사용합니다. https://github.com/mono0926/LicensePlist GitHub - ..
-
identifierForVendor를 이용한 기기 식별하기iOS 2023. 5. 30. 08:48
안녕하세요. 그린입니다🍏 이번 포스팅에서는 identifierForVendor 값을 이용하여 기기를 식별하는것에 대해 알아보려 합니다🙋🏻 만약 해당 앱에서 특별히 회원가입이나 소셜 로그인 등의 기능이 없지만 기기마다 식별을 해주어 서버와 통신을 하고 싶을때가 있을겁니다. 그럴때는 몇가지 방법들이 있지만 오늘 소개할 identifierForVendor의 값을 이용하여 해당 앱에서의 기기별 식별할 값으로 이용할 수 있을겁니다. 그럼 우선 identifierForVendor가 뭔지부터 알아야겠죠? identifierForVendor? identifierForVendor는 UIKit의 UIDevice에서 제공하는 인스턴스 프로퍼티입니다. 앱 공급업체에 대해 기기를 고유하게 식별하는 영문과 숫자로 이루어진 문자열..
-
Setting Bundle을 사용해 커스텀한 설정 추가하기iOS 2023. 5. 1. 20:24
안녕하세요. 그린입니다🍏 이번 포스팅에서는 Setting Bundle을 알아보고 이를 이용해 기본 앱 설정에서 커스텀한 설정들을 추가해보도록 하겠습니다🙋🏻 이 주제에 대해 알아보게 된 계기 우선 엑코 시뮬레이터에서 간혹 발생하는 버그인지 저는 아직 명확한 원인을 찾을 수 없던 문제가 있었어요! 예를들어, 토이 프로젝트로 실제 앱 스토어에 배포되지 않은 앱에서 위치 정보를 받아온다고 가정해볼께요. 그럴때 우리는 위치 정보 허용에 대한 요청을 보내고 이는 디바이스 기본 해당 앱 설정에서 확인할 수 있어요. 즉, 디바이스 > 설정에서 해당 앱이 목록에 노출되어야 하는데 노출되지 않는 문제가 있었습니다. 그래서 사실상 명확한 테스트를 해볼 수가 없었던 이슈로 인해 테스트를 위해서 기본 앱 설정이 목록에 나타나게..
-
쿠키로 안전하게 HLS m3u8 영상 접근하기iOS 2023. 3. 30. 16:14
안녕하세요. 그린입니다🍏 이번 포스팅에서는 HLS와 m3u8파일이 뭔지 그리고 이러한 영상들에 쿠키를 통해 어떻게 안전하게 리소스에 접근할 수 있는지 학습해보고 구현해보겠습니다🙋🏻 우선 쿠키로 안전하게 영상에 접근하기전 HLS와 m3u8이라는 개념에 대해 알아보시죠🕺🏻 HLS (HTTP Live Streaming) 표준 HTTP 기반 스트리밍 프로토콜로 HLS라고 흔히 불립니다. 즉, 쉽게 말해 가장 흔히 사용되는 비디오 스트리밍 프로토콜이라고 하죠. HTTP 파일 조각들로 비디오 파일을 나누고 이를 HTTP 프로토콜을 이용해 전송합니다. 클라이언트 단에서는 이런 HTTP 파일을 로드한 후 비디오를 재생시킬 수 있죠! 그럼 왜 HLS를 사용하느냐? 이에 대한 물음에는 HLS 장점 중 하나로 모든 인터넷 ..
-
Nib & Xib (feat. storyboard)iOS 2022. 12. 29. 10:20
안녕하세요. 그린입니다🍏 이번 포스팅에서는 Nib와 Xib에 대해 알아보겠습니다🙌 UI 구현 종류 우리가 iOS 개발을 하다보면 UI 즉, 화면을 그리는것은 빼놓을 수가 없습니다. iOS에서는 이 UI를 구현하는 방법에 대해 3가지를 이용할 수 있습니다. 1. 스토리보드로 구현하기 2. 코드로 구현하기 3. Nib, Xib로 구현하기 여기서 오늘 알아볼 것이 세번째 Nib, Xib로 구현하는것에 대해 알아보겠습니다🕺🏻 우선 그럼 Nib와 Xib의 정의부터 알아보시죠! Nib Nib는 Nextstep Interface Builder의 약자입니다. iOS / MacOS에서 애플리케이션의 유저 인터페이스를 저장하는 파일이죠. Nib는 UI를 그리는것에 있어서 바이너리 형식의 압축 파일을 이용해 필요한 클래스들..
-
removeArrangedSubview(_:) VS removeFromSuperview()iOS 2022. 11. 14. 17:59
안녕하세요. 그린입니다🍏 이번 포스팅에서는 오랜만에 UIKit을 다뤄볼까해요! 주제는 하위 구성된 뷰를 제거하는 방법으로 removeArrangedSubview(_:)와 removeFromSuperview()가 있습니다. 이 두 메서드를 알아보며 차이를 알아보겠습니다🙌 우선 그럼 removeArrangedSubview(_:)부터 알아보죠! removeArrangedSubview 배열된 상위 뷰의 스택 배열에서 파라미터로 넘어온 뷰를 제거합니다. func removeArrangedSubview(_ view: UIView) 선언은 위와 같이 해당 메서드에 상위 뷰로부터 제거할 하위 뷰를 인자로 넣어주면 됩니다. 해당 상위 뷰에서는 이제 더이상 제거되는 뷰의 위치 및 크기 등을 관리하지 않아요. 그렇지만 아예..
-
dSYM (feat. Firebase Crashlytics)iOS 2022. 8. 29. 16:11
안녕하세요. 그린입니다🍏 이번 포스팅에서는 dSYM에 대해 알아보고 Firbase Crashlytics에서 해당 앱의 비정상 종료되는 상황의 에러 리포트를 받을 수 있도록 dSYM 파일을 업로드 하는 방법에 대해 학습해보겠습니다🙌 dSYM? dSYM이란 debug symbol file의 약자입니다. dSYM 파일은 이름에서도 알 수 있듯이 해당 앱의 디버그 기호 및 정보를 저장합니다. 앱들은 간혹 런타임 에러가 날 경우가 있습니다. 즉 강제 종료가 되는것이고 이는 사용자에게 좋지 않은 사용 경험을 주는것이죠. 그렇기에 꼭 어떤 상황 및 빌드에서 어떤 에러가 나타나는지 배포되어 운영되는 앱에서는 꼭 이를 분석하여 개선시켜야 합니다. 이런 분석을 하기 위해서는 예를들어 파이어베이스의 crashlytics 같..