반응형
ASAA파일
앱과 웹사이트를 연결해주는 공식 인증서 같은 파일
예시) https://example.com/.well-known/apple-app-site-association
iOS는 보안이 엄격해서 진짜 특정 도메인이 특정 앱과 연결된게 맞는지 검증이 필요
그래서
- 앱 쪽에서 → "나는 example.com이랑 연결될 거야"라고 선언
- 서버 쪽에서 → "이 앱이 우리 도메인이랑 연결되는 거 맞아"라고 파일로 증명
ASAA 파일 예시
{
"applinks": {
"details": [
{
"appIDs": ["[TeamID].[Bundle ID]"],
"components": [
{
"/": "/account*", // account가 붙어있는건 웹에서 열겠다
"exclude": true
},
{
"/": "*" // 나머지는 앱에서 열겠다
}
]
}
]
}
}
앱에서는 다음 코드 추가
Entitlements/프로젝트.entitlements
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:example.com</string>
</array>
</dict>
</plist>
📱 Universal Link 동작 과정
- 앱 설치 시 iOS가 AASA 파일 다운로드
- 시스템이 도메인-앱 매핑 캐싱
- 사용자가 링크 클릭
- 경로가 components와 매칭되면 앱 실행
- 아니면 웹 실행
⚠️ AASA 캐싱 이슈
- 앱 삭제해도 캐시가 바로 안 지워질 수 있음
- 서버 수정해도 즉시 반영되지 않음
- 몇 시간 소요될 수 있음
- 테스트 시 번들 ID 변경이 가장 확실
캐싱 테스트
기존에 모든 경로를 허용("*" 설정)한 상태에서
/accounts* 경로를 제외하도록 AASA를 수정했지만,
https://example.com/accounts 링크 클릭 시 여전히 앱이 실행되었다.
이는 iOS가 이전 AASA 설정을 캐싱하고 있기 때문에 발생한 현상이다.
앱 삭제하고, 휴대폰 껐다 키고 1시간 동안 별짓을 다했는데 바로 반영이 되지 않았다.
포기하고 한 3 4시간 뒤에 앱을 삭제하고 다시 켰더니 그제서야 적용이 됐다.
캐싱이 앱 단이 아니라 OS단에서 하는거라 좀 오래 잡고 있는 거라고 한다...
애플 특성상 보통 1~7일 정도 지나야 모든 사용자에게 자연스럽게 적용된다고 한다.(앱 삭제하지 않아도)
반응형
'iOS 개발' 카테고리의 다른 글
| [iOS개발] CLAUDE AI 활용법 정리 (0) | 2026.03.10 |
|---|---|
| [iOS 개발] GitHub Actions + Claude API로 PR 자동 코드 리뷰 파이프라인 구축 (0) | 2026.03.04 |
| [iOS개발] Swift Concurrency async, throw 관련 테스트 정리 (4) | 2026.01.08 |
| [iOS 개발] 프로젝트 구조 개선 (0) | 2025.12.31 |
| [iOS 개발] iOS 앱 용량 줄이기 (4) | 2025.02.15 |