일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- transformation.map
- GeometryReader
- swift
- 상단 탭바
- DevelopmentRegion
- 기존 앱
- SwiftUI
- Android
- Side Menu
- notifychanged
- oberve url
- UIPresentationController
- 개발자 면접
- swift #swift keychain #keychain 사용법
- development language
- detect url
- List
- DataBinding
- UIViewControllerTransitioningDelegate
- ios
- Swift Package Manager
- ViewBuilder
- base64 변환
- url 관찰
- convert base64
- scrolling tab
- Tuist
- 스크롤 탭
- pod install
- url 추적
- Today
- Total
버그 잡이
iOS Universal Link 삽질 일기 본문
구현 기능
이메일 인증을 위해서 특정 링크를 클릭했을때 앱으로 이동
기술 검토
- Firebase DynamicLink
- UniversalLink
위 두 가지를 사전에 검토했다.
Firebase를 사용하면 Apple-app-site-association 파일을 따로 올릴 필요도 없고 좋지만
상황상 기존 링크 주소를 바꾸기는 힘들어서 기존 링크를 그대로 등록할 수 있는 Universal Link 를 사용하기로 했다.
Universal Link 사용법
www.raywenderlich.com/6080-universal-links-make-the-connection
raywenderlich에 좋은 튜토리얼이 있고 이를 잘 풀어쓴 블로그 글도 많아 패스하겠습니다.
삽질 기록
1. path에 *을 붙여주자
apple-app-association 파일을 보면 아래와 같은 구조로 되어있다.
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
위에서 볼 수 있듯이, 특정 path까지 인식하게 할 수 있다.
"www.apple.com/wwdc/news?id=sad1"
나는 위와 같은 path의 주소를 인식하면 앱으로 이동하게 하고 싶어서 path를 "/wwdc/news/" 로 설정했다.
그런데... 유니버설 링크가 안 먹었다. 여러 삽질을 하다가 '/wwdc/news/*' 처럼 * 을 붙여주니까 잘 되는 것을 확인했다.
'www.apple.com/wwdc/news/' 처럼 딱 떨어지는 것이 아니면 * 을 붙여줘야 하나보다
2. 웹쪽 로직 고려 (AASA 파일이 안 올라갔을 수도 있다.)
AASA 파일을 올리려면 웹팀에게 부탁해야한다.
그런데 배포를 해도 파일이 안 올라가는 문제가 있었다.
확인을 해보니 웹쪽에 확장자가 없는 파일은 삭제하는 로직이 있다고 한다.
그러니 웹팀에게 파일 업로드를 부탁한 후에, 해당 "<도메인>/apple-app-site-association" 을 주소창에 쳐서 잘 올라갔는지 꼭 확인하자.
3. 도메인이 보안상의 문제로 접근이 안 될 수 있다.
회사 테스트 환경 도메인은 외부망에서 접근이 허용되지 않아 유니버설 링크가 작동하지 않았다.
search.developer.apple.com/appsearch-validation-tool
위 validator에서 접근 가능한 주소인지 확인해볼 수 있다.
4. root가 아닌 .well-known
아래 공식문서를 보면 AASA 파일은 root 또는 .well-known 경로에 넣어주라고 한다.
developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html
나는 그래서 루트에 넣고 테스트 했다.
그런데 안 된다...
이것 때문에 한참을 삽질했는데, .well-known에 넣고 하니까 된다. 후...
어디에 넣는 것이 정확한지는 모르겠지만 나의 경우 .well-known 경로에 넣은 경우만 동작했다.
*참고
branch.io/resources/aasa-validator/
branch에서 만든 universal Link validator인데, 애플에서 제공해주는 것보다 단서를 더 많이 주니
universal link 가 잘 동작하지 않을때, 디버깅용으로 쓰면 유용하다.
'IOS' 카테고리의 다른 글
pod install 명령어를 Xcode 단축키로 등록하기 (0) | 2021.11.09 |
---|---|
iOS/Swift - background 진입 방법 구분하기 (Home 버튼, Lock 버튼) (0) | 2021.10.29 |
kin 라이브러리 - project.pbxproj 파일이 깨져 프로젝트가 열리지 않을때 (0) | 2021.04.16 |
iOS/Swift 온보딩 화면 만들기 (with animation) (0) | 2021.02.25 |
tableView.reloadData() 이후 스크롤이 튀는 현상 해결방법 #automaticDimension #estimatedRowHeight (0) | 2020.12.07 |