iOS 11

터치 아이디 및 로컬 인증(LocalAuthentication) 프레임워크

1. 로컬 인증 프레임워크 반입 구문을 작성한다. import LocalAuthentication 2. 인증에 관한 종합 정보를 관리하는 객체인 인증 컨텍스트를 정의한다. 필요할 때마다 매번 객체 인스턴스를 생성해서 사용한다. let context = LAContext() 3. 터치 아이디 인증창을 구성한다. 오류 코드를 처리할 변수와 터치 아이디 인증창에 들어갈 메세지를 정의한다. 오류가 없을 수도 있으니 타입은 옵셔널로 한다. let context = LAContext() var error: NSErrror? let msg = "로그인을 위해 인증이 필요합니다." 4. canEvaluatePolicy 메소드를 호출하여 터치 아이디 인증을 사용할 수 있는 지 프레임워크에 문의한다. 이 메소드는 평가할 ..

iOS 2021.12.16

액세스 토큰(Access Token)과 리프레시 토큰(Refresh Token)

액세스 토큰은 API 호출에 사용되며, 유효 기간이 있다(짧다). 리프레시 토큰은 액세스 토큰을 갱신하는 데에 사용되며, 유효 기간이 없다. 리프레시 토큰으로 액세스 토큰을 갱시하면 새로운 액세스 토큰이 발급되지만, 리프레시 토큰은 유지된다. 로그아웃하면 리프레시 토큰과 액세스 토큰이 모두 만료된다. 로그인하면 기존의 리프레시 토큰과 액세스 토큰은 모두 만료되고, 새로운 토큰이 발급된다. 참고 : 재은씨의 꼼꼼한 Swift 실전편

iOS 2021.12.15

키 체인(Key Chain)

키 체인은 애플 계열의 운영체제에서 동작하는 다양한 응용 프로그램에서 비밀번호나 계정 등 보안이 필요한 요소를 저장하는 데 사용되는 암호화된 저장소이다. 특징 1. 기본적으로 애플리케이션은 자기 자신의 키 체인에만 접근할 수 있다. 2. iOS에서 키 체인의 위치는 샌드박스(외부에서 받은 파일을 바로 실행하지 않고 보호된 영역에서 실행시켜 봄으로써 잘못된 파일과 프로그램이 내부시스테 전체에 악영향을 주는 것을 미연에 방지하는 기술) 외부이므로, 앱을 삭제해도 키 체인에 저장된 정보는 삭제되지 않는다. 3. 앱의 프로비저닝 파일을 이용해서 앱 간의 사용 졍로를 구분하기 때문에, 동일한 앱이라도 프로비저닝 파일을 변경해서 빌드하면 기존 벙보를 더 이상 조회할 수 없다. 4. 키 체인 그룹을 사용하여 서로 다..

iOS 2021.12.10

동기(Synchorous)와 비동기(Asychorous)

동기 실행이 끝날 때까지 다른 것을 처리하지 않고 대기한다. 코드가 실행 결과값을 반환받은 후 이 값에 따라 다음 로직을 실행하는 방식이다. 비동기 특정 기능이 실행되는 동안 대기하지 않고 다른 일을 한다. 일반적으로 비동기로 동작하는 것들은 실행 완료를 알려주기 위한 장치를 가진다. 비동기 함수들은 일반적으로 결과값을 가지지 않으며, 처리가 끝났을 때 이어서 실행할 또 다른 함수를 입력받는 경우가 많다. 이를 콜백 함수하고 한다. 처리 결과값에 따라 실행할 다음 로직을 콜백 함수 형태로 미리 전달하여, 비동기 함수가 알아서 적절한 시점에 실행하는 방식이다. 동기 방식의 함수를 비동기 방식으로 바꾼다는 것은 A 함수가 실행을 끝내면 B 함수가 이어서 다음 로직을 실행하던 구조를 , B 함수가가 실행해야 ..

iOS 2021.11.22

ATS(App Transport Security) 설정하기

Apple 측에서 앱 자체의 보안성을 위해 ATS(App Trasport Secuirty)라는 정책을 통해 기본적으로 https 통신을 하도록 유도하기 때문에 http 서버로 테스트하기 위해선 Info.plist에서 ATS 부분을 추가해주어야 한다. 1. Info.plist 파일을 열고 App Transport Security Settings 항목을 추가한다. 2. App Transport Security Settings 하위에 Exception Domains을 추가한다. 3. Exception Domains 하위에 도메인을 설정한다. 도메인 설정 시 맨 앞의 www. 또는 서브 도메인은 제외한다. 4. 도메인 별 설정에 사용할 수 있는 키를 추가한다. NSExceptionAllowsInsecureHTT..

iOS 2021.11.22

코코아팟(CocoaPods)으로 라이브러리 설치하기

패키지 관리 도구란? 앱 프로젝트에 원하는 라이브러리를 손쉽게 설치하고 버전까지 관리할 수 있게 하는 도구이다. 코코아팟이란? 코코아 프로젝트에 대한 의존성 패키지를 관리하는 도구 중 하나이다. 애플 코코아 개발 환경에서 진행되는 애플리케이션 프로젝트에 필요한 외부 라이브러리를 간단하게 설치할 수 있도록 도와주는 유틸이라고 할 수 있다. 코코아팟 설치하기 1. 설치 명령어를 입력한다. $ sudo gem install cocoapods 2. 패스워드를 입력한다. Password: 라이브러리 설치하기 1. 현재 진행 중인 프로젝트 폴더의 위치로 이동한다. $ cd /User/프로젝트경로/ 2. Podfile을 생성한다. (pod init 명령어를 실행하면 파일이 자동으로 생성되고 기본 내용도 채워준다.) ..

iOS 2021.11.22

이미지를 코어 데이터에 저장할 때 주의할 점

이미지를 데이터베이스에 저장하는 것은 매우 무거운 작업이기 때문에, 대량의 데이터를 다룰 때 성능의 저하를 가져올 수도 있다. 실무에서는 데이터베이스가 아닌 문서 디렉터리에 파일로 저장하고, 그에 대한 저장 경로만 데이터 베이스에 저장하는 방식으로 로직을 구현하는 것이 좋다. 데이터가 커지면 확실히 DB를 직접 엑세스해서 처리하는 것보다 코어 데이터를 사용하는 것이 유리합니다. 코어 데이터는 약산의 오버헤드가 있긴 하지만 지능적으로 데이터를 가져올 뿐만 아니라, 데이터 목록을 받아왔다 하더라도 우리가 관리 객체에 직접 액세스하기 전까지는 실제로 데이터를 메모리에 로드하지 않는다. 이는 메모리 관리나 성능 측면에서 상당한 장점이라고 할 수 있다. 특히 두 개 이상의 엔터티를 조인해야 하는 경우, 코어 데이..

iOS 2021.11.19

브릿징 헤더 파일

Swift에서 Objective-C 라이브러리를 사용하기 위해서는 브릿징 헤더라는 특수한 파일이 필요하다. 이 파일은 Objective-C에서 정의된 객체를 Swift 아키텍처가 참조할 수 있도록 중간에 다리를 놓아주는 역할을 한다. 쉽게 말해서 Swift에게 Objective-C 클래스의 존재를 알려주는 파일이다. 브릿징 헤더 파일 내부에 Objective-C 클래스의 반입 구문을 작성해 주어야 Swift 아키텍처에서 이를 재참조할 수 있다. 브릿징 헤더 파일 직접 생성하는 법 1. 프로젝트에 빈 파일 하나를 추가하고, 이름을 Bridging-Header.h로 입력한다. 파일 내용은 비워둔다. 2. 프로젝트 메타 정보 설정의 Build Settings 탭에서 [Swift Complier - Genera..

iOS 2021.09.01

인앱 프레임워크(In-App Framework)

iOS 자체에 포함되어 있어서 따로 설치하지 않아도 이미 설치되어 있는, OS에 함께 포함된 애플리케이션을 번들 프로그램(Bundle Program), 또는 번들 애플리케이션(Bundle Application)이라고 부른다. 번들 프로그램을 앱 내부에서 사용하여 기능을 손쉽게 확장할 수 있도록 제공하는 별도의 프레임워크를 인앱 프레임워크(In-App Framework)라고 한다. 앱 내부에서 외부 앱 기능을 사용할 수 있도록 지원하는 프레임워크라는 뜻이다. 참고 : 꼼꼼한 재은씨의 Swift 실전편

iOS 2021.08.05

테이블 뷰의 재사용 매커니즘

화면에 나타내야 할 데이터가 아무리 많아도 테이블 뷰는 화면에 당장 표시할 만큼의 셀만 만들고, 나머지는 필요할 때(화면에 보여야 하는 딱 그만큼)마다 생성한다. 스크롤로 인해 화면을 벗어나게 된 기존 셀들은 테이블 뷰에서 제거한 후 재사용을 위해 큐에 저장한다. 새로운 셀이 필요해지는 시점이 되면 큐에 저장된 셀을 꺼내어 재사용하고, 저장된 셀이 없을 경우 새로 생성한다. ※ 재사용 큐에 저장된 셀 자체는 재사용하지만, 셀의 콘텐츠는 tableView(_:cellForRowAt:) 메소드를 통하여 매번 새롭게 구성된다. → 스크롤이 원활하게 실행되게 하기위한 프로그래밍 원칙 반복적으로 호출되는 메소드의 내부에는 네트워크 통신 등 처리 시간이 긴 로직을 포함하지 않아야 한다. 네트워크 통신을 통해 읽어온..

iOS 2021.07.26