iOS url schemes open app / app store
모바일 웹에서 스키마를 이용하여 앱을 호출하고, 앱이 미설치 되어있을 경우 앱스토어로 이동하는 방법
URL Schemes (커스텀 스키마) 설정해주는 법
우선 url schemes 사용해서 웹에서 앱 연결해주는 건 굉장히 쉽다.
[Targets - Info - 맨밑에 URL Types] 추가 해주고
Identifier 와 URL Schemes(원하는 스키마 명)을 등록해줄 수 있다.
그리고 나서
info plist - URL Types - Itme 0 - URL identiifier 입력해주면 완료.
시뮬레이터 혹은 기기에 앱을 설치하고, 홈화면으로 돌아가서 사파리를 열어주고
주소창에 설정해준 URL Schemes + :// 를 넣고 이동하면 앱이 뜨는 걸 확인할 수 있다.
만약 내가 설정한 URL Schemes가 "testapp" 이라면 주소창에 "testapp://" 를 입력하면 된다.
+ 나는 모바일 웹페이지에서 어떤 버튼을 누르면 앱이 열리도록 요청을 받아서 웹 서버 담당하시는 분께 스키마 url만 알려드렸다.
앱이 설치되어 있을 경우, 이 스키마 url만 설정해주면 아주 간단하게 구현이 가능한데
문제는 앱이 설치되어 있지 않을 경우!!!
하.. 이거때매 스트레스 많이 받았다.
아무리 생각해봐도 앱이 설치되어 있지 않는데 대체 내가 Xcode 프로젝트에서 뭘 해줄 수 있지?
그냥 서버에서 앱스토어 url로 연결시켜줘야하는 거 아닌가??
근데 일단 해달라고 하니까 방법을 오지게 찾아보는데도 마땅한 해결책이 나오지 않았다.
(차라리 검색결과가 없으면 몰라.. 막 할 수 있는 것처럼 해놓고 결국 마땅한 답변이 없었음.
내가 혹시 못찾은 거라면 제발 누가 알려줘요.. )
암튼 그래서 결국 웹의 JavaScript에서 코드를 추가해주기로 했다.
(내가 JavaScript 코드까지 찾아보게 될줄이야.. )
var userAgent = navigator.userAgent;
var visitTime = (new Date()).getTime();
if (userAgent.match(/Android/i)) { //안드로이드일 때
location.href = 'intent://main_web#Intent;scheme="testapp://";package=""';
} else if (userAgent.match(/iPhone/i)) { //아이폰일 때
setTimeout(function() {
if ((new Date()).getTime() - visitTime < 3000) {
location.href = "앱스토어 주소";
}
} ,2500);
setTimeout(function() {
location.href = "testapp://";
} ,0);
}
이런 식으로 안드로이드일 때와 아이폰일 때를 나눠서 해주면 된다는데
아이폰이 훨씬 까다롭구만 ㅠㅠ
이렇게 하니까 연결이 되긴 하는데 문제가
앱이 설치가 안되어있을 때 앱으로 바로 이동하는 게 아니라
'주소가 유효하지 않기 때문에 Safari가 해당 페이지를 열 수 없습니다' 라는 alert 창이 뜬다...
이거 뜨고 나서 앱스토어가 열리긴 함..
근데 이거 어떻게 없애죠..?
참고 : 모바일 웹에서 앱 호출하기
다양한 방법을 찾아보다, 딥링크에 대해 알게 되었고
스키마 대신 Firebase DynamicLink를 사용하여 웹에서 앱 호출 및 앱스토어로 연결하게끔 만들어주어 해당 문제를 해결하였다.
참고 : 딥링크란? + Firebase 이용한 Deep Link iOS
2021. 12. 09
글 올린지 8개월 만에 찾은 해답.. ㅎ
스키마를 이용해서 앱스토어 주소를 그대로 넣어서 이동시키면 '주소가 유효하지 않기 때문에 Safari가 해당 페이지를 열 수 없습니다' 라는 alert 창이 뜨는데, 이유는 모르겠다. 그냥 사파리 방침?이라고 한다.
근데 앱스토어 주소 대신 "itms-apps://itunes.apple.com/app/" 뒤에다 해당 앱의 앱스토어 Apple ID를 넣어서
location.href = "itms-apps://itunes.apple.com/app/AppleID";
이렇게 연결 url을 설정해주니깐 앱스토어 페이지로 연결이 잘 되는 것 같다! 😊
혹시나 제 글이 도움이 되셨다면 하트 한번 눌러주시면 감사하겠습니다 🥰
iOS 개발자분들 모두 화이팅입니다👍🏻
'초보 iOS 개발자의 일상 > 개발 업무' 카테고리의 다른 글
딥 링크란? + Firebase 이용한 Deep Link iOS (0) | 2021.04.20 |
---|---|
Universal Links 이용한 웹에서 앱 및 앱스토어 이동 (0) | 2021.04.19 |
[Swift iOS] FCM(Firebase Cloud Messaging) 이용하여 Push 설정 (0) | 2021.04.15 |
[Swift iOS] WKUserContentController 하이브리드 앱 웹 뷰 연동하기 (0) | 2021.04.14 |
앱 심사를 통과하지 못함. 사유 안뜰 때! 심사 거부 사유 확인하는 법 (0) | 2021.04.12 |