iOS 9 버전에서 유니버셜 링크로 앱 실행이 안될때
** 2017. 10. 24 - 다른 사례에 대한 내용이 추가되었습니다*
유니버셜 링크는 특정한 페이지 주소를 클릭했을때 앱에서 해당 컨텐츠를 볼 수 있도록 만들어진 특수한 딥링크입니다.
애플이 이 유니버셜 링크라는 기능을 선보인건 iOS 9 버전부터 였습니다.
뭐, 물론 애플이 새로 내놓은 기능들이 바로 제대로 동작하는걸 기대하는건 희망사항일 뿐입니다.
저희 회사에서도 유니버셜 링크를 사용해서 앱 설치를 유도해야 할 상황이 와서 열심히 삽질을 했습니다. 결과적으로 성공했습니다.. 만.
iOS 9 버전에서 유니버셜 링크로 앱 실행이 안된다?
적당히 구현을 끝내고 테스팅을 하고 있던 오전 11시. iOS 11, 10 버전에서는 정상적인 동작을 하는걸 확인하고 안심하면서 점심을 먹었습니다.
점심을 빵빵하게 먹고 와서 마지막 지원 버전인 iOS 9 테스팅을 시작하였습니다. 그런데 앱이 설치된 상태에서 링크를 눌렀더니 계속 앱스토어로 리다이렉트가 되는 현상이 발생하였습니다.
어쩌겠습니까, 삽을 들어야죠.
유니버셜 링크는 상황에 따라 너무나도 많은 변수가 있어서 왜 안되는지 딱 잘라 집어내기가 매우 어렵습니다.
지원이 안되는 앱에서 링크를 눌렀다거나, Bundle Identifier가 제대로 설정이 안 되어 있다거나, apple-app-site-association
이 알맞게 설정되지 않았다거나..
위의 문제들은 서드파티 솔루션을 사용하면 거의 대부분 해결되는 문제들입니다. 서드파티 솔루션을 사용하지 않는다면 서버 개발자와 함께 수명이 줄어들 것입니다. 서드파티 솔루션을 쓰고 있으시다면 제공된 문서를 꼼꼼히 따라 구현하면 됩니다만, 해결되지 않는 문제는 항상 문서화되지 않은곳에서 벌어지기 마련이죠.
Please, Don't Touch Anything
여러분은 저 빨간 링크를 누르면 어떤 일이 벌어진다고 생각 되시나요?
저도 옛날 옛적에 저걸 본 적이 있었는데, 사파리로 넘어가길래 대수롭지 않게 생각했던 기억이 납니다. 아마 그 앱이 페이코였나? 그랬을겁니다. 무시무시하게도 저 링크를 누르고 나면 유니버셜 링크 기능이 꺼지게 됩니다.
언제인지 모르겠지만 제가 저 링크를 누른적이 있었던 모양입니다. 그래서 그 이후로 유니버셜 링크가 작동하지 않게 된 것 같네요.
자, 그러면 이제 죽어버린 유니버셜 링크 기능을 살려야겠죠? 링크가 있는 앱 또는 브라우저로 다시 가서 링크를 롱 터치하면 아래와 같은 액션시트가 뜰 겁니다.
이 중 '앱 이름'에서 열기
를 누르면 정상적으로 앱이 실행되면서 죽었던 유니버셜 링크 기능도 부활하게 됩니다. (만약에 저 버튼이 안 보이신다면 지금 이 브라우저 창을 닫고 다시 서드파티 솔루션의 메뉴얼을 천천히 다시 읽어보세요.)
배포할때는 항상 문제가 터지죠
해결 후 몇일이 지나고, 갑자기 갑님이 유니버셜 뭐시기 기능 추가 이번 업데이트에 들어가냐고 물어봅니다.
나 : 어? 그거 다음달에 들어가는거 아니었나요?
갑 : 내가 언제 그랬어 빨리 넣어줘 오늘 릴리즈 부탁해 ㅋ
네네 해드려야죠...
SMS에 붙여야 하는 링크라 이상한 링크처럼 안 보이게 커스텀 도메인 설정을 합니다. 테스트 할때 쓴 도메인을 따다가 다시 실서버쪽으로 붙였습니다. 따로 브랜치 따놓은 기능을 합치고 TestFlight에 올려서 돌려봅니다.. 안됩니다.. 또 올리려면 시간 걸리니까 의심가는 부분을 수정해서 애드혹으로 띄워봅니다.. 안됩니다..
안되면 되게 해야죠. 체크해야 할 부분은 여러 곳입니다. APP_NAME.entitlement
파일부터 보죠.
- Association Domains 항목에 앱을 호출하는 도메인이 적혀 있어야 합니다.
- 위 도메인의
/apple-app-site-association
이 정상적으로 동작하고 appId 가 해당하는 앱과 일치해야 합니다.
이 부분이 제대로 되어 있지 않으면 유니버셜 링크를 롱 터치 했을때 '앱 이름'에서 열기
메뉴가 나오지 않는데, 저의 경우 전부 제대로 작성되어 있었습니다.
삽질을 여러번 하다가 애플이 제공하는 Validation Tool 을 발견했습니다. 링크를 넣고 돌려보면 아직 앱 스토어에 안 올려서 안 된다고 나옵니다. 그럼 그렇죠.
그러다 링크를 다시 클릭해봤는데, 열립니다.
왜 안된지는 명확하지 않지만, Validation Tool이 애플 서버에서 가지고 있던 캐시를 날린 모양입니다. 커스텀 도메인을 테스트 환경에서 리얼 환경으로 옮겨오면서 생겨난 문제라고 생각할 수도 있을 것 같습니다.
역시 애플은 빨리 망해야 합니다.
도움이 된 문서들
감사합니다. 여러분 덕분에 제 정시퇴근과 수명이 지켜 졌습니다.
- Branch - Branch Documentation
- Github - BranchMetrics/ios-branch-deep-linking - Issue in iOS9 #256 (문제 해결에 가장 도움이 된 댓글입니다.)
- Apple - Troubleshooting Universal Links
- Apple - App Search API Validation Tool