본문 바로가기

전체 글

(9)
생체인증을 통한 본인인증 제작기 이전 '보안 핀코드 입력화면 제작기'에 이어서 이번에는 생체인증을 통한 본인인증 진행을 위해 구현한 부분들을 설명해볼까 합니다. 요구사항 1. 기기별로 탑재된 생체인증 기능을 활용하여 본인여부를 판단 2. 생체인증 진행 및 발생한 오류 및 실패 처리 3. 생체인증 정보 변경 시 앱에서 재활성화 유도 위 세가지 요구사항을 순차적으로 설명드리도록 하겠습니다. 0. 구조설계 구현 방식을 설명 드리기에 앞서 해당 기능 구현을 위해 설계한 구조에 대해 먼저 설명드리겠습니다. 앞서 설명드렸듯이 현재 진행중인 프로젝트는 ReactorKit을 사용 중이고, 따라서 생체 인증을 요청 및 처리하는 방식은 RxSwift를 사용하여 처리하였습니다. 1. 기기 생체인증(TouchID, FaceID) 사용 가능 여부 확인 2. ..
보안 핀코드 입력화면 제작기 핀테크팀 사업부로 개발을 진행하며 작업하였던 내용 중 유익한 내용을 정리하도록 하겠습니다. 우선 본인임을 증명하기 위한 인증 과정 중, 핀코드 인증화면을 작업했던 내용을 공유해볼까 합니다. 우선, 작업 완료한 결과물을 보여드리겠습니다. 요구사항 작업하기에 앞서 보안 키패드 제작에 있어 요구사항은 크게 3가지였습니다. - 입력 창이 노출될 때 마다, 새로운 배열로 노출 - 등록 제한 번호 적용 - 입력한 핀번호 다중 암호화 및 서버 인증 시 전자서명 적용 다음 세 가지 요구사항을 충족하기 위해 적용한 결과를 순차적으로 설명드리겠습니다. 0. 구조설계 해당 기능을 설명드리기 앞서, 저는 이번 프로젝트에 RxSwift와 ReactorKit 프레임워크를 사용하고 있습니다. 기능을 구현하기에 앞서 요구사항들을 충..
FCM과 APNs에 관하여 지금까지 서비스를 개발하며, 단순히 사용자들에게 메시지를 전달하기 위해 사용하였던 Push Notification과 메시지 전달을 위해 사용하였던 FCM(Firebase Cloud Messging), APNs에 관하여 공부하였고 이 블로그에 남깁니다. 1. Push Notification Push Notification이란? => 서버에서 발생한 Event를 특정 클라이언트에게 Event 발생 사실을 통지하는 기술 그렇다면 , Push Notification이 왜 필요할까요? iOS App의 경우 기본적으로 Background 상태가 되면 모든 처리 기능이 제한됩니다. 따라서 Background / Foreground 상태에 관계없이 사용자에게 메시지 전달이 필요한 경우, Push Notification..
Initializer 기본이 되면서 중요한 Initializer에 관련하여 정리하였습니다. Initialize -> 새로운 인스턴스를 사용할 준비를 하기 위하여 저장 프로퍼티의 초기값을 설정 구조체와 클래스의 인스턴스는 처음 생성할 때 옵셔널 저장 프로퍼티를 제외한 모든 저장 프로퍼티에 적절한 초기값을 할당해야 합니다. Initializer가 실행될 때 저장 프로퍼티에 초기값을 할당할 수 있으며, 초기화 후에 값이 확정되지 않은 저장 프로퍼티는 존재할 수 없습니다. 기본 이니셜라이저 모든 프로퍼티에 기본값으로 초기화하여 인스턴스를 생성 -> 저장 프로퍼티의 기본값이 모두 지정되어 있고, 동시에 사용자 정의 이니셜라이저가 정의되어 있지 않은 상태에서 제공됩니다. 값 타입(구조체 / 열거형)의 이니셜라이저 멤버와이즈 이니셜라이저..
(동기/비동기)와 동시성에 대한 개념 앱 개발자의 기초이자 중요한 개념인 동기와 비동기, 그리고 동시성에 대해 정리합니다. 동기 vs 비동기 동기와 비동기의 개념에 대해 살펴보기 전에 우선 쓰레드에 대한 이해가 필요합니다. 쓰레드의 정의를 보면 ''프로그램(프로세스)의 실행단위"라 명시되어 있습니다. 쉽게 말해 쓰레드란 Task를 처리하는 단위이자 흐름이며, 프로세스 내에서 실제로 작업을 수행하는 주체입니다. 본인이 앱 개발자인 만큼 앱을 기준으로 설명하겠습니다. 앞에서 설명한바와 같이 쓰레드는 일의 흐름이며 task를 할당받아 일을 처리합니다. 앱은 여러개의 쓰레드를 갖고, 일반적으로 별도의 처리없이 코드를 작성한 경우 task들은 하나의 쓰레드(메인 쓰레드)에 적재되고 처리됩니다. -> task1의 비용이 크다면, task2는 task1..
CI/CD(feat. Fastlane) Apple의 CodeSigning에서 설명한 글에 이어, 앞서 설명한 iOS 앱 개발 및 배포 과정에 있어 불편함을 최소화 및 CI/CD를 적용을 위해 공부한 부분을 글로 남깁니다. CI/CD란? → Application의 개발 단계를 자동화하여 보다 짧은 주기로 고객에게 제공하는 방법 → 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 "Integration Hell")을 해결하기 위한 솔루션 Integration Hell: 코드 통합 단계에 있어서 그 과정이 매끄럽지 못해 최종적으로 코드를 통합하고 수정하는데 있어 오랜 시간이 걸리는 현상을 의미합니다. CI(Continous Integration): 지속적인 통합 통합 프로세스를 지속적으로 실시 코드는 주기적으로 변형 및 통합 코드는..
Apple 인증서 및 CodeSigning iOS App CI/CD 구현을 위해 공부한 내용 중 애플 디바이스 개발을 위해 필연적인 요소인 코드 사이닝에 대한 기록을 남깁니다. Apple 인증서란? 애플은 오직 자신들의 하드웨어에 앱을 비롯한 프로그램(소프트웨어)이 동작하도록 허락합니다. 따라서 iOS 기준 App이 실행될때 마다 애플로부터 인증을 받았는지 확인합니다. 인증 절차 개발자 ⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤> iOS Developer Program ⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤⏤> Apple 인증서 신뢰 여부 결정
Memory에 대한 이해 초보 iOS 개발자로 일하면서, 내가 짜는 코드에 대한 원리와 성능보다는 의도한대로 작동하는지가 최우선이었고, 이에 대한 한계는 분명히 존재함으로 늦게나마 메모리에 대한 이해를 목표로 공부하고 그 과정을 남깁니다. Swift 성능에 영향을 미치는 요소 Allocation: 인스턴스를 생성하면 Stack과 Heap 중 어느 곳에 할당 되는 지 Reference Counting: 인스턴스를 통해 레퍼런스 카운트가 몇개가 발생하는지 Method Dispatch: 인스턴스에서 메소드를 호출했을 때, 메소드 디스패치가 정적인지 동적인지 Allocation Stack VS Heap 스택과 heap은 모두 RAM(Random Access Memory)의 영역입니다. Stack은 LIFO(Last In First Ou..