버그 잡이

iOS Universal Link 삽질 일기 본문

IOS

iOS Universal Link 삽질 일기

버그잡이 2021. 5. 12. 22:52

 

구현 기능

 

이메일 인증을 위해서 특정 링크를 클릭했을때 앱으로 이동

 

 

 

기술 검토

 

- Firebase DynamicLink

- UniversalLink

 

위 두 가지를 사전에 검토했다.

Firebase를 사용하면 Apple-app-site-association 파일을 따로 올릴 필요도 없고 좋지만

상황상 기존 링크 주소를 바꾸기는 힘들어서 기존 링크를 그대로 등록할 수 있는 Universal Link 를 사용하기로 했다.

 

 

 

 

Universal Link 사용법

 

www.raywenderlich.com/6080-universal-links-make-the-connection

 

Universal Links: Make the Connection

Learn how to connect your iOS app with your website using Universal Links, so users can tap a link and go directly to the corresponding content in your app!

www.raywenderlich.com

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 가 잘 동작하지 않을때, 디버깅용으로 쓰면 유용하다.

 

 

 

 

반응형
Comments