🎯 Overview
iOS 11부터 도입된 Password AutoFill 기능은 로그인/회원가입 UX를 개선 가능함. 사용자는 키체인, 1Password 등에서 저장된 계정 정보를 한 번에 입력할 수 있음. 개발자는 몇 가지 설정만으로 보안성과 편의성을 모두 챙길 수 있음.
Prerequisites
- iOS 11 이상 타겟팅
- Apple Developer 계정
- HTTPS로 서비스되는 도메인
- 앱에 Associated Domains 권한 추가
- 도메인 루트에 AASA 파일 업로드
📦 Step 1: 키체인 및 AutoFill 활성화
- 아이폰 설정 → 암호 → 키체인 사용 체크함
- 앱 삭제 후 재설치 권장함 (AASA 파일 갱신 반영 위해)
📦 Step 2: UITextField에 textContentType 태깅
- 이메일/아이디 입력란:
.username
- 비밀번호 입력란:
.password
- 신규 비밀번호 입력란:
.newPassword
(회원가입/비번 변경 시 Strong Password 제안)
let emailTextField = UITextField()
emailTextField.textContentType = .username
let passwordTextField = UITextField()
passwordTextField.textContentType = .password
let newPasswordTextField = UITextField()
newPasswordTextField.textContentType = .newPassword
Explanation
- textContentType을 올바르게 지정해야 iOS가 해당 필드를 인식함
- isSecureTextEntry = true 설정 필수 (비밀번호 입력란)
- SwiftUI는 SecureField 사용 시 일부 버전에서 strong password 제안이 제한될 수 있음 (이슈 참고)
📦 Step 3: Associated Domains 설정
- Xcode → Target → Signing & Capabilities → + Capability → Associated Domains 추가함
webcredentials:도메인
형식으로 입력 (예:webcredentials:myapp.com
)- 여러 도메인 지원 가능함
📦 Step 4: AASA 파일 생성 및 업로드
- 도메인 루트(
https://myapp.com/.well-known/apple-app-site-association
)에 확장자 없는 JSON 파일 업로드함 - Content-Type: application/json; charset=utf-8 설정 필수
- 예시:
{
"webcredentials": {
"apps": ["TEAMID.com.app.ios.dev", "TEAMID.com.app.ios"]
}
}
- TEAMID는 Apple Developer에서 확인 가능함
- 파일은 반드시 public하게 접근 가능해야 함 (로그인/인증 필요 X)
⚠️ AASA 파일이 잘못되면 AutoFill이 동작하지 않음. AASA Validator로 검증 권장함
📦 Step 5: 동작 확인
- 앱 재설치 후, 로그인/회원가입 화면에서 UITextField 포커스 시 키보드 상단에 열쇠 아이콘 QuickType Bar 노출되는지 확인함
- 키체인/1Password 등에서 계정 선택 가능함
🔧 Troubleshooting
Issue 1: QuickType Bar가 안 뜸
Solution: AASA 파일 경로/포맷/Content-Type, Associated Domains 설정, textContentType 오타, HTTPS 여부, 앱 재설치 여부 점검함
Issue 2: SwiftUI에서 strong password 제안이 한 필드만 됨
Solution: SecureField 대신 UIKit 커스텀 필드 사용, username 필드 추가 등 우회법 시도함 (관련 이슈)
Issue 3: isSecureTextEntry=true에서 키보드 깜빡임(iOS 17)
Solution: iOS 버그로, textContentType과 isSecureTextEntry 조합에 따라 발생함. 참고
Issue 4: 앱스토어 심사에서 AutoFill 미동작 지적
Solution: AASA 파일, Associated Domains, HTTPS, textContentType, 앱 번들ID/TEAMID 일치 여부 재점검함
💡 실전 팁 & FAQ
- Q. 1Password 등 서드파티 매니저도 지원되나?
- A. iOS 12+에서 지원함. 키체인 외 1Password, LastPass 등도 QuickType Bar에 노출됨
- Q. OTP(One Time Code) 자동완성은?
- A.
textContentType = .oneTimeCode
지정하면 SMS 인증코드 자동완성됨
- A.
- Q. AASA 파일 캐싱 문제
- A. 앱 삭제 후 재설치로 강제 갱신함. CDN 캐싱 주의
- Q. 개인정보/보안 이슈
- A. AASA 파일은 반드시 HTTPS, 공개 접근, 최소 권한 원칙 준수
- Q. Associated Domains Entitlement 누락
- A. Capabilities에서 누락 시 AutoFill 동작 안함.
🔗 References
- Supporting associated domains
- About the Password AutoFill workflow
- Enabling Password AutoFill on a text input view
- iOS Password AutoFill — how and why?
- Username, Password and OTP autofill for iOS Apps for faster login
- AASA Validator
'IOS' 카테고리의 다른 글
[iOS] Fastlane Match로 Apple 인증서, 프로비저닝 파일 관리하기 (3) | 2025.07.14 |
---|---|
[iOS] WKWebView에서 웹문서 스크롤 높이 구하기 (2) | 2025.07.04 |
Django 서버에서 iOS Push Notification 보내기 (0) | 2025.06.26 |
[IOS] UIGestureRecognizer 사용해서 지도 조작하기 (0) | 2022.10.19 |
[IOS] Realm 사용해서 데이터 저장하기 (0) | 2022.10.05 |