728x90
반응형
Swift Auto Login 기능 만들기
- 지난번엔 로그인 기능을 해봤으니 이번에는 저장된 데이터로 자동로그인을 하는 기능을 구현해보자
To-do List
- Checkbox 버튼 만들기
- auto login 버튼 체크 후 로그인 성공 시 id, pwd 저장하기
- Logout 버튼 클릭 시 로그인화면 이동 & 저장된 id, pwd 삭제
- App 완전 종료 후 다시 켰을 때 리스트 화면으로 이동하기
- 저장된 id가 있다면 리스트 화면으로 이동
- 없다면 로그인 화면 띄우기
1. Button으로 체크박스 흉내내기
안드로이드에서는 따로 CheckBox
라는 widget이 제공되어 편리했는데 xcode에서는 checkbox는 없고 button밖에 안보인다..
찾아보니 button을 커스텀하여 만들어야하는데 stackoverflow에서 조금 간단히 체크박스같은 버튼을 만들 수 있는 방법을 제시했다 (https://stackoverflow.com/questions/41344895/the-best-way-to-use-checkbox-ios-swift)
- StoryBoard에서 설정하기
- StoryBoard의 Button을 클릭한 후
Attribute inspector
메뉴로 이동 - State Config >
selected
로 변경한 후 image항목에 적절한 이미지를 삽입한다 - State Config >
default
로 변경한 후 이미지를 넣거나 배경 색상을 변경하는 식으로 버튼을 표시한다
- 코드로 설정하기
btn_box.setBackgroundImage(UIImage(named: "box"), for: .normal)
btn_box.setBackgroundImage(UIImage(named: "checkBox"), for: .selected)
- 버튼 클릭 시 선택된 상태 가져오기
- 아래 코드는 storyboard와 viewcontroller에서 button을 연결한다
- 아래 코드는 storyboard와 viewcontroller에서 button을 연결한다
2. auto login 버튼 체크 후 로그인 성공 시 id, pwd 저장하기 (UserDefaults 사용)
로그인에 성공한 id와 pwd를 저장해야하기 때문에 디바이스에 간단한 정보를 저장할 수 있는 UserDefaults
를 사용하게 되었다
이 클래스는 안드로이드에서 SharedPreference
와 비슷하다고 볼 수 있다
standard
: Returns the shared defaults object. (공유할 기본 객체 리턴)- 데이터를 저장할 때는
func set(Any?, forKey: String)
데이터를 가져올 때는
func data_type(forKey: String)
함수를 사용한다auto login버튼이 체크된 상태에서 로그인까지 성공했다면 아이디와 비밀번호를 저장하도록 한다
- set(저장할 데이터, 키값)
- 이제 아이디와 비밀번호는 공유 객체에 저장되어있다
자동로그인을 위해 UserDefaults에 저장된 값 가져오기
- id 키 값에 값이 있는 경우 전역변수 uid에 저장하여 parameter로 넘긴다 ()
- id 키 값에 값이 있는 경우 전역변수 uid에 저장하여 parameter로 넘긴다 ()
3. Logout 버튼 클릭 시 로그인화면 이동 & 저장된 id, pwd 삭제
4. App 완전 종료 후 다시 켰을 때 바로 리스트 화면으로 이동하기
마지막 단계, App을 완전 종료한 후 저장된 데이터를 가지고 로그인화면에서 다음화면으로 바로 이동하는 부분은 위에서 봤던 parameter로 uid와 pwd를 넘기는 과정과 유사하다
- 화면이 로드됨과 동시에 확인하는 과정이 필요하므로
viewDidLoad()
함수에 작성한다 - id키 값이 있는 경우 로그인 콜백 메소드를 실행한다
- getLogin() 함수에는 화면 전환을 위한 소스가 있다
- 화면이 로드됨과 동시에 확인하는 과정이 필요하므로
지난번 HTTP 통신 예제에서는 loginAction에 데이터를 파싱하여 로그인 성공 시 화면 전환하는 소스를 통째로 넣었었다
- 이번에 자동로그인을 하면서 viewDidLoad()안에도 긴 소스를 넣었는데 두 소스가 동일한 기능을 하기 때문에 따로 함수로 묶어두었다(getLogin())
완성!
반응형
'Programming > iOS' 카테고리의 다른 글
[ios/Swift3.0] TextView re-positioning when keyboard shown (0) | 2017.08.25 |
---|---|
[iOS/Swift] 자동 완성 기능 구현하기(swift auto completion by UISearchController) (0) | 2017.08.10 |
[iOS/Swift] URLSession, URLRequest, Alamofire, SwiftyJSON 라이브러리를 사용한 HTTP 통신 예제 (2) | 2017.08.05 |
[iOS/Swift] cocoapods 설치하기 (0) | 2017.08.04 |
[iOS/Swift] APNs (Apple Push Notifications) 알아보기, 사용법 (0) | 2017.08.03 |