Archive/꼼꼼한 재은씨 시리즈 38

[iOS14] 오토 리사이징 + 오토 레이아웃 정리

iOS 디바이스별 크기에 따라 UI 대응방향 1. 화면 크기의 변화에 따라 가로, 세로 길이 유지한 채 외부 간격만 늘림 2. 화면 크기의 변화에 따라 가로, 세로 길이 변화시키면서 외부 간격은 유지 - 아무것도 선택하지 않을 시, 간격 및 크기 고정 iOS 레이아웃 제어 기능 제공 1. 오토 리사이징 - [View] 메뉴 - [Inspectors] - [show size Inspector] - + + 2. 오토 레이아웃 오토 리사이징 설정 창 왼쪽을 보면은 사각형 두개가 중첩되어 있음 왼쪽 사각형 내부에 표시된 화살표와 간격 기호들은 선택된 객체와 상위뷰의 관계를 나타낸다. 사각형 바깥쪽은 객체를 포함하고 있는 상위 뷰를 의미하고, 사각형 안쪽은 선택된 객체를 의미한다. 사각형 내부에 있는 너비와 높이..

[iOS14] Touch ID 사용법

터치 아이디는 iOS가 제공하는 인증 방식으로 아이디 패스워드 입력을 통해 처리되던 로컬 인증을 지문 인식만으로 대신할 수 있도록 만들어진 기능 iOS7부터 일부 자체앱을 통해 기능을 공개하기 시작하여, 특히 앱스토어나 아이클라우드 등에서는 최초 1회만 아이디/패스워드로 로그인 하고 나면 이후 부터는 터치 아이디를 통해 인증할 수 있게 되었다. iOS8부터는 일반 앱에서도 터치 아이디 API를 이용한 로컬 인증 기능을 사용할 수 있게 되었다. 터치 아이디의 API는 LocalAuthentication이라는 프레임워크를 통해 제공된다. 이 프레임워크는 우리가 지문 인식에서 흔히 보게 되는, 아이폰 버튼에 손가락 대고 스캔하기에 대한 기본 화면을 제공할 뿐만 아니라 지문 인식이 실패하거나 사용자가 이 기능을..

토큰 갱신과 OAuth 2.0 인증

토큰에는 크게 액세스 토큰과 리프레시 토큰 두 가지로 나뉜다. 액세스 토큰은 API 호출 시 인증을 위한 용도로 사용하고, 리프레시 토큰은 앤세스 토큰 만료 시 갱신을 위해 사용한다. 누군가는 리프레시 토큰 대신 로그인 창을 띄워 새로 로그인하도록 처리하면 도지 않냐고 반문할지도 ㅁ르지만, 모바일 기기에서는 사용자가 매번 로그인 하는 것은 무척 피곤한 일이다. OAuth 2.0 인증 표준 역시 모바일에서의 불편함을 잘 이해하고 있기 때문에, 가급적 로그인 하는 경우를 줄이려고 한다. 그래서 인증에 꼭 필요하지만 수명이 짧은 액세스 토큰과 액세스 토큰을 갱신하는 것 외에는 아무것도 하지 않지만 수명이 긴 리프레시 토큰으로 나누어 관리하도록 하고 있다. 토큰 관계를 간단히 정리해 보자면 1. 액세스 토큰은 ..

[iOS14] 키 체인(key Chain)

키 체인이란 애플 계열의 운영체제에서 동작하는 다양한 응용 프로그램에서 비밀번호나 계정정보를 저장하는 암호회된 저장소 아이클라우드, macOS, watchOS, 앱 아이디, 웹에 저장된 아이디, 와이파이 패스워드 등 광범위하게 이용된다. 키 체인의 특성 1. 기본적으로 앱은 자기 자신의 키 체인에만 접근 가능 2. iOS에서 키 체인의 위치는 *샌드박스 외부이므로, 앱을 삭제해도 키 체인에 저장되는 정보는 삭제되지 않음 3. 앱의 프로비저닝 파일을 이용해서 앱 간의 사용 경로를 구분하기 때문에, 동일한 애빙라도 프로비저닝 파일을 변경해서 기존 정보를 더 이상 조회할 수 없다. 4. 키 체인 그룹을 사용하여, 서로 다른 앱에서도 저장된 데이터를 공유 가능 5. 비번 또는 개인키처럼 보호가 필요한 항복은 암..

[iOS14] Unwind 세그웨이를 이용하여 화면 이동하기

자 생각해보자 내가 회원가입하는 로그인 기능을 구현중인데, alert로 확인을 클릭하면 회원가입 성공을 주고 그 화면에 남아있으면 무언가 이상하겠지? 뭔가 다음 진행과정으로 흐름이 계속 이어져야 하는데 프로필 화면으로 돌아가는거, 근데 쉽게 생각해서 이전 화면으로 돌아가면 돼 그러면 확인 눌렀을때 completion 부분에 self.navigationController?.popViewController(animate:false) 로 하면 간단히 되겠지? 그런데 show 타입으로 이미 나는 화면 전환을 했으니 돌아갈때도 네비게이션 컨트롤러를 이용해야만 한다는 문제점이 발생해. 그럼 어떻게 해야할까? 이 문제에 대해서 상세하게 이야기 하기 전에 우리는 앱을 구현하다 보면은 이전 화면이 아니라 더 이전 화면으..

Alamofire 라이브러리 ( + CocoaPods 개념) 설치 및 사용법

Alamofire는 HTTP 네트워킹을 위해 스위프트 기반으로 개발된 비동기 라이브러리로, URLRequest + URLSession 객체를 래핑한 간결한 구성 덕분에 모바일 서버와 HTTP통신을 구현할 때 많이 사용됩니다. 모바일 API 호출 역시 Alamofire를 이용하면 더 쉽고 간결하게 작성할 수 있습니다. 장점은 서버로 보낼 요청을 간편하게 구성 가능서버의 응답 컨텐츠 타입에 맞추어 사용 가능한 다양한 메소드 제공예를들면 JSON 데이터를 주고 받기 위한 전용 메소드라던가, 바이너리 파일을 주고 받기 위한 전용 메소드, 대용량 파일을 내려받기 위한 다운로드 메소드 등특히 JSON 전용 메소드를 이용하면 서버로부터 받은 결과값을 손쉽게 파싱할 수 있다.또한 다운로드 메소드에서는 다운로드 진행 정..

[iOS14] ATS와 관련하여

이 항목은 앱이 서버에 전송하는 데이터에 대한 보안 설정으로 줄여서 ATS라고 부른다. 쉽게 앱이 HTTP 프로토콜을 사용하는 외부 서버와 통신하기 위해 설정해 주어야 하는 항목 왜냐하면 애플 정책상 HTTPS를 반드시 사용하도록 하고 있기 때문이다. 그래서 HTTP 사용시 반드시 설정해주어야 한다. ( 그럼에도 실제 앱 출시에서는 HTTPS가 아니면 리젝된다고 한다 ) 여기서 데이터를 주고 받을 서버가 HTTPS 프로토콜을 사용한다면 ATS를 설정하지 않아도 된다. HTTPS 프로토콜은 데이터 패킷을 모두 암호화 하여 전송하기 때문에 이미 안전하기 때문이다. 또한 HTTP 프로토콜을 사용하더라도 도메인이 아닌 IP 기반의 주소를 이용하여 서버와 데이터를 주고 받으면 ATS 설정이 필요 없지만, IP 기..

JSON 학습정리

JSON - JavaScript Object Notation의 약자로서 자바스크립트 언어에서 객체 속성을 표현하기 위해 사용하기 시작한 데이터 구조. 하지만 쉽고 간결한 표현 능력 덕분에 자바스크립트에 국한되지 않고 C 계열의 언어나 Java, Perl, Python 등 다수의 프로그래밍 언어에서도 지원되는 대표적인 텍스트 기반 데이터 구조로 자리잡았다. JSON에 사용되는 데이터 구조는 크게 두 가지 종류로 나눌 수 있다. 하나는 여러 가지 속성 키 - 값으로 : 집합구조를 정의할 때는 중괄호 사용 다른 하나는 성격이 비슷한 구조 리스트로 : 리스트 정의할 때는 대괄호 사용 모든 JSON은 이 두가지 구조를 활용해 사용 명칭 형식 구분 JSON 객체 {키 : 값, 키 : 값 ...} 여러 속성을 정의하..

서버연동(RESTful API,HTTP,HTTPS) 이론

HTTP는 크게 요청과 응답으로 나눌 수 있다 각 메시지는 라인 - 헤더 - 바디 세 부분으로 구성된다. 라인 : http 메시지의 맨 첫 줄에 해당하는 영역으로 메시지의 가장 기본적인 내용인 응답/요청 여부, 메시지 전송 방식, 상태 정보 등이 작성되는 곳. 헤더 : 메시지 본문에 대한 메타 정보 바디 : 실제로 보내고자 하는 메시지 본문 내용 실제 메시지 샘플을 살펴보면서 http에 대해서 알아보자. 흔히 request라고 부르는 요청 메시지는 get/post 부르는 이 요청 메시지는 get/post 등의 전송 메소드를 정의하는 데에서 시작. 뒤이어 작성되는 것은 요청 내용에 대한 경로, 그 다음은 요청 형식에 대한 버전 정보. 즉, 어떤 버번의 http 문법을 준수하고 있는가에 대한 것. 여기가 첫..

[iOS14] SearchBar - 검색바 사용

자 이번에 HCI 프로젝트를 진행하면서 검색바를 만들기로 했는데, 이걸 뷰에 이미지와 텍스트필드 버튼을 컨테이너 식으로 얹어서 만들려고 했다니... 아무튼... 서치바라는 게 있어서 사용해보고 간단하게 정리해보도록 하자. 1. 서치바를 스토리 보드에서 추가한다. 2. (주의) 서치바의 delegate를 도커바에 연결한다. 3. 위의 코드는 사용자가 키보드에서 검색 버튼 클릭시 실행되는 메소드인데, 자동완성 되지 않는 경우가 종종 있음. 키보드로 검색 활성화 하는 방법 : viewDidLoad에 이 코드를 추가한다. 서치바는 아울렛 변수를 연결한 것 searchBar.enablesReturnKeyAutomatically = false // 검색 키가 항상 활성화되어 있도록 처리 자 이번에는 10개의 테이블..