2024/05 7

Swift) UUID + KeyChain

Device uuid를 계속 고정할 수 있게 할 수 있다. 그러나 uuid는 앱을 삭제 후 재 실행하면 변경된다.iOS5 이전에는 디바이스마다 고유 값 udid를 제공했었는데 앱마다 udid가 같다는 이유로 더 이상 지원하지 않는다.다만 공장 초기화 시에는 변경된다.사용을 위해 keychain 사용자 설정을 해야한다고 되어 있는데, 필자는 다른 셋팅 없이 되었다.라이브러리 사용을 2가지만 하면된다.라이브러리 다운로드코드 2줄라이브러리 다운로드주소: https://github.com/taka0125/TAKUUIDpod, spm 둘다 지원한다.코드TAKUUIDStorage.sharedInstance().migrate() uuidInTheKeychain.text = TAKUUIDStorage.sharedIn..

iOS/Swift 2024.05.31

Objective-C) Keyboard Layout 감지

핸드폰의 특성상 타이핑을 해서 데이터를 입력할 일이 많습니다.사용자들은 정보를 입력하기 위해서 핸드폰 스크린을 터치 하고 키보드를 타이핑 합니다.만약 데이터를 입력하기 위해 터치를 했지만 키보드는 나오고, 데이터를 입력할 입력란이 키보드에 가려 안보인다면 당황하겠죠?Objective-C 에선 어떻게 해결하는지 알아봅시다.먼저 키보드가 나오는 이벤트를 받아야 합니다.[ [NSNotificationCenter defaultCenter] addObserver: self selector: @selector(showKeyboard:) name: UIKeyboardWillShowNotification object: nil];Notification을 이용해 키보드가 나타나면 showKeyboard 함수가 실행..

iOS/Objective-C 2024.05.30

Swift) Protocol을 이용한 코드 개선

Protocol으로 반복되는 코드를 개선해 봅시다.extension 활용예시ex) protocol 코드protocol GameProcess: AnyObject { func start() func end()}extension GameProcess { func start() { print("Start Game") } func end() { print("End Game") }}먼저 프로토콜을 사용해서 기능을 정의합니다.그리고 extension으로 기능에 대한 상세 구현 합니다.수정사항 xex) 예시코드 1class WarGame: GameProcess { func go() { start() }}let warGame = Wa..

iOS/Swift 2024.05.24

TestFlight) 사용법

등록 순서1. 앱 빌드 등록 및 심사등록App Store 등록과 마찬가지로 Archive 진행단 버전 및 빌드는 이미 App Store에 등록된 앱보다 높아야 한다.(낮을 시 에러 발생..)심사테스팅 그룹 생성 -> 빌드 버전 선택 -> 심사(1~2일 소요) -> 심사 완료(테스트 중)심사는 빠르면 당일 2~3시간이내에도 완료될 수 있음.2. 테스터 등록테스터 등록을 위한 정보 필요이메일이름이메일은 App Store에서 앱을 다운로드 할 때 사용하는 이메일이여야 함.등록 완료 후 초대 이메일 자동으로 전송됨.3. 사용TestFlight 앱 다운로드 후 초대 코드 입력 -> 테스트할 앱 다운로드 -> 시작

iOS/TestFlight 2024.05.21

Swift) Continuations 활용

Continuations에는 withCheckedContinuation, withCheckedThrowingContinuation 가 있습니다. 둘 중에 차이는 에러를 return 하는지 안하는지 차이가 있습니다.Continuations는 비동기 코드, Closure형태를 async로 변경할때 많이 사용합니다.단, 주의사항이 있습니다.한번에 continue를 두 번이상 호출하면 안되고, resume을 호출하면 안됩니다. 그렇게 되면 Task가 무기한 일시 중단 상태로 되어버립니다.(앱이 멈추고 결국엔 강제종료가 됩니다.)Closure를 async로 변경하는 예시 코드에러 xClosurefunc requestWeclomeMessage(completion: ((String) -> Void)) { compl..

iOS/Swift 2024.05.20