Firebase를 이용해 로그인 기능을 만들어보자! 1. 프로젝트에 코코아팟을 이용해 firebase 추가하기 아래표를 보고 프로젝트에서 필요한 기능을 추가해주자! 로그인 기능 사용할거니까 Core랑! Auth 요거 두개! 2. firebase에서 프로젝트 생성 https://console.firebase.google.com/u/0/ 위의 링크 들어가서 프로젝트 생성! firebase에서 프로젝트 생성 했으면 위의 이미지에서 iOS 이미지를 탭해서 iOS 앱 추가해주면 된다! 앱 번들아이디 입력해주고 등록하고! plist 다운받아서 앱에 추가해주면된다! 요부분은 아까 위에서 추가해줬으니 넘어가자! 요렇게 앱 진입점에서 코드를 추가해주면 된다! Authentication -> 로그인 방법 들어가서! 이메일..
애플 로그인 구현하기 (Sign in with Apple) 애플 로그인이란?? 앱을 다운받고 실행하면 초기화면에 다음과 같은 버튼을 본적이 있다. 요녀석들! 혹은 카카오, 네이버, Google 로 시작하기 같은 버튼등 편리한 로그인 기능이 있는데 그중 apple 아이디로 회원가입,로그인 기능을 얘기한다. apple에서는 유저의 어떠한 개인정보도 드러내지 않고 로그인할수있도록 했다. (일부앱은 이름이나 이메일을 요구할수도 있다.) 위와같이 이메일을 숨길수도 있는데 이때 숨김옵션을 사용하게되면 실제이메일을 유니크한 랜덤 주소로 만들어준다. 애플은 아무것도 track 하지 않으므로 유저의 개인정보를 보호할수 있도록한다. 구현하기 1. 프레임워크 import하기. import AuthenticationServi..
Kingfisher 1.Kingfisher란? Kingfisher.Github Kingfisher란? Kingfishersms 이미지 캐싱을 쉽게하고, task관리도 해주는 라이브러리다. CocoaPods, SPM(Swift Package Manager), Carthage 모두 지원하며 원하는 방식을 사용해 import할수 있다. 이미지 캐싱이란? 캐시(Cache)는 컴퓨터과학 에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 데이터에 접근하거나 값을 계산하는 시간이 오래걸릴 경우 시간을 절약하고 싶은 경우에 사용할수있다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 앱에서 이미지 캐싱을 활용하게 된다면 매번 서버에서 이미지를 ..
OSI 7 계층 7계층으로 나누어진 이유? 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 해당 단계만 수정할 수 있기 때문이다. 1. 물리(Physical) 리피터, 케이블, 허브 등등 데이터 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간. 데이터를 전송하는 역할만 진행한다. 2. 데이터 링크(Data Link) 브릿지, 스위치 등등 물리 계층으로 송수신되는 정보를 관리하여 안전하게 전달되도록 도와주는 역할. Mac주소를 통해 통신한다. 프레임에 Mac주소를 부여하고 에러검출, 재전송, 흐름제어를 진행한다. 3. 네트워크(Network) 라우터, IP 데이터를 목적지 까지 가장 안전하고 빠르게 전달하는 기능을 담당한다. 라우터를 통해 이동할 경로를 선택하여 IP주소를 ..
SnapKit Snapkit Github Snapkit 이란? Snapkit은 코드로 레이아웃을 간략하게 설정해줄수 있는 기능을 가진 라이브러리다. 오토레이아웃을 이해하고있다면 무리없이 사용할 수 있다. CocoaPods, SPM(Swift Package Manager), Carthage 모두 지원하며 원하는 방식을 사용해 import할수 있다. Snapkit을 사용하는 이유 예를들어 스택뷰를 View에 꽉채운다고 가정해보자. 기존에는 다음과 같이 레이아웃을 설정해줬다. private func setupContraint() { NSLayoutConstraint.activate([ stackView.topAnchor.constraint(equalTo: self.view.topAnchor), stackVie..
키보드의 검색 버튼을 입력했을때 뿐만아니라 키워드를 입력할때마다 Request를 요청할수 없을까?? (rx.text로 변경된 text감지하기) 4줄 요약 RxCocoa의 text (SearchBar.rx.text)를 이용해 text변경시 Request를 요청하도록 구현함. 의도한것과 다르게 처음 키워드를 입력할때와 키보드 제거시 Request요청 하는 문제가 발생함. text Definition을 확인해보니 SearchBar의 text가 nil일경우 "" 으로 옵셔널바인딩 하는것과 키보드제거(편집 종료) 되었을때도 text를 방출하는것을 확인함. distinctUntilChanged()오퍼레이터를 사용해 동일한 text를 방출하게될경우 무시하도록 하여 문제를 해결함. 처음 API Search기능 구현시 ..
Launch Screen 런치 스크린(Launch Screen)이란? 공식문서에 아래와 같이 정의 되어있다. 앱이 시작할 때 즉시 나타나고 앱의 첫 번째 화면으로 빠르게 교체되는 화면으로 앱이 빠르고 반응이 좋다는 인상을 줄 수 있다고 한다. 앱의 데이터를 로딩하는 동안 빈 화면을 보여주지 않기 위해 나타내는 화면으로 표현될 수도 있다. 앱의 아이덴티티를 나타낼 수 있는 화면이기도 하다. 앱만의 아이콘, 이미지를 이용해 유저에게 강한 인상을 심어줄 수 있다. iOS에서는 launch Screen, 안드로이드 에서는 splash라는 표현을 쓰는것 같다. 런치스크린을 만들때는 다음과 같은 지침을 따라야한다. UIKit만을 사용해야 한다. 단 하나의 UIView나 UIViewController 객체만을 사용해..
APIKey를 Github에 노출되지 않도록 해야한다! 혹시나 노출되어 법적문제가 발생할수도 있다는...말을 어디선가 들었다..! APIKey 소중하니까 숨겨보도록하자..! APIKEY 숨기는법 1. PropertyList 먼저 PropertyList 파일을 하나 생성해준다! 파일명은 현재 사용하고 있는 API이름을 따서 MalrangMarketInfo 라고 만들어둡니다! 파일에 API_KEY라는 이름의 Key를 하나 추가합니다! VendorId와 Secret은 무시해주세요! Value에는 사용할 APIKEY값을 입력해주면 됩니다! 2. Bundle Extension PropertyList 파일 작업이 끝나고나면 이제 .swift 파일을 하나 만들어줍니다! 네이밍은 Bundle+Sugar 라고 작성해 두..