IOS/iOS
[TIL] iOS. Password AutoFill
HyeonGyu IM
2020. 11. 26. 15:10
## 로그인기록이 있다면 자동으로 아이디와 비밀번호를 로그인해주는 기능입니다.
- iOS Passwrod Manager를 이용하여 안전하게 디바이스에 저장됩니다.
- 아래의 그림은 사파리앱에서 웹사이트에 로그인하는 화면입니다 화면을 보면 퀵바에 로그인 정보가 표시됩니다.
- 비밀번호는 사용자의 디바이스에 안전하게 저장됩니다. 저장된 비밀번호는 iCloud Keychain을 통해 자동으로 동기화 됩니다.
- 저장된 비밀번호는 설정앱을 통해 확인할수 있습니다
- iOS 11부터는 앱에서도 Password AutoFill을 통해 직접 구현할수 있습니다
- 앱과 연결된 계정이 있다면 자동으로 퀵바에 표시됩니다
- 퀵타입 바에 표시되는 계정은 iOS에서 출원한것이 아닙니다. 앱과 연관된 계정만 표시됩니다. 패스워드 매니저는 앱이나 웹의 도메인을 기준으로 연관된 계정을 표시해줍니다.
- 패스워드 오토필을 구현할때는 앱과 웹사이트를 연결하는 것이 중요합니다. 아래의 그림처럼 앱과 애플이 정해주는 웹사이트에서 정보를 읽어올수 있어야합니다. 읽어오는 정보는 JSON형태입니다.
## 필수사항 ( 기능을 테스트할때는 iCloud Keychain이 활성화 되어있는 디바이스에서 실제로 테스트 해야합니다.)
- 애플 디벨로퍼 프로그램에 가입해야합니다
- 앱과 연결할 웹서버가 구축되어야하고
- 네트워크를 통해 접속할수 있어야합니다.
## 구현순서
-
먼저 아이디를 입력할 텍스트 필드를 Text Input Traits에서 content Type을 Username으로 지정해줍니다 이렇게 하면 아이디가 입력될 필드라고 인식됩니다.
-
password 필드에서는 password 타입으로 지정해줍니다. 이렇게 하면 패스워드가 입력될 필드라고 인식됩니다.
-
Project → Target → Capabilities → Associated Domains [ OFF → ON] → Domain 입력 아래 체크표시 2개가 모두 표시되어 있어야 합니다. 무료계정인경우 체크되지 않습니다.
- 앱을 실행시키면 앱에서 해당 데이터를 요청합니다. 2개의 URL중에서 하나로 접근할수 있어야합니다.
- 하나의 주소로 접근해보면 이렇게 팀아이디와 번들아이디가 제이슨형태로 나타나 있습니다. 이 데이터가 실행중인 앱의 번들아이디와 일치하고 앱 팀의 이름과 일치하면 앱과 웹이 연결됩니다.
## 주의사항
- 로그인 후에 화면을 완전히 사라지게 하는것이 중요합니다.
- 연관된 뷰 컨트롤러가 인스턴스에서 제거되면 실제로 로그인이 성공했다고 판단합니다.
- 예상대로 동작하지 않는다면 뷰컨트롤러 인스턴스가 정상적으로 해제되는지 확인