[iOS] UITextField 비밀번호 자동 채우기 기능 구현하기

2025. 7. 6. 21:25·IOS

🎯 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 인증코드 자동완성됨
  • 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
'IOS' 카테고리의 다른 글
  • [iOS] Fastlane Match로 Apple 인증서, 프로비저닝 파일 관리하기
  • [iOS] WKWebView에서 웹문서 스크롤 높이 구하기
  • Django 서버에서 iOS Push Notification 보내기
  • [IOS] UIGestureRecognizer 사용해서 지도 조작하기
무슈후슈
무슈후슈
코딩은 창작이다.
  • 무슈후슈
    감성코드
    무슈후슈
  • 전체
    오늘
    어제
    • 분류 전체보기 (125) N
      • 알고리즘 (30)
      • IOS (28)
      • Swift (5) N
      • TIL (41)
      • CS (16)
      • 메모 (2)
      • 시플 (1)
      • RxSwift (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    http
    다이나믹 프로그래밍
    codable
    풀이
    비동기
    백준
    Realm
    그리디
    프로그래머스
    이분 탐색
    코딩테스트
    SWIFT
    github
    python
    git
    그래프 탐색
    파이썬
    알고리즘
    MVVM
    ios
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
무슈후슈
[iOS] UITextField 비밀번호 자동 채우기 기능 구현하기
상단으로

티스토리툴바