앱이 설치되 있으면 딥링크가 보이고 앱이 없으면 앱설치(createAppAction 으로 만든)가 뜨게 하려고 하는데요…
예제의 변수명인 appLink를 링크로 보내면 클릭시 해당 앱이 설치되 있으면 이동은 하는데… 원하는 뷰까지 이동을 못하는거 같습니다…
(execparam 에 딥링크를 적으면 이동하는지는… 저걸 사용하는 형식을 모르겠습니다…“test1”:“딥링크주소” 는 동작 안하더군요;
이를 딥링크로 해결해 보려 하는데… 웹링크에 딥링크 주소(예를 들면 deeplinkappTest://firstView - 테스트 앱에 url스킴입니다)를 적으면
도메인 어쩌구 메시지와 함께 보낼 수가 없습니다.
근데 여기서 웹링크 보내는걸 제거하고 보내면 먼저 보내기 실패했던 메시지가 보내진 못한 상태로 카톡에 뜨긴 하더군요…
(상대방은 안보이지만 나는 눌러서 딥링크 타고 앱으로 이동은 되더군요…;
결과적으로…
카카오링크를 통해 딥링크를 보내고 싶습니다…!!
만약 기기에 앱이 없다면(아이폰이건 안드로이드건) 앱설치가 뜨게 하고 싶구요…
@oldserpent 결론부터 말씀드리자면 원하시는 기능을 충분히 할 수 있어요. iOS기준으로 우선 설명을 드리자면,
앱이 설치되어 있다면 앱으로 이동되면서 3rd앱의 openURL 종류의 AppDelegate callback으로 url이 전달될꺼에요.
callback받는 url이 카카오링크밖에 없다면 그냥 해당 url을 parsing해보면 execparam으로 넣어준 값들이 key/value로 전달되고 있음을 알 수 있어요(한번 openURL등에 debugging을 걸어보세요~).
참고로 카카오 링크 콜백인지 아닌지를 판별하고 싶다면 아래와 같이 하면 될듯 해요.
+ (BOOL)isKakaoLinkCallback:(NSURL *)url {
if (url == nil) {
return NO;
}
return ([[url absoluteString] hasPrefix:[KOUtils kakaoLinkCallbackURL]]);
}
또한 3rd 앱을 호출하는 스킴은 보통 kakao{앱키}://kakaolink 식으로 호출되고 execparam의 경우 뒤에 쿼리 스트링으로 key/value가 전달 될꺼에요.
만약 앱이 설치되어 있지 않았다면??
이때 바로 개발자 웹사이트내의 앱 플랫폼 설정의 번들 id 및 앱 스토어 id가 참조되어 스토어로 이동을 알아서 톡내에서 시켜주게 되요. 앱스토어 id에 1234를 넣으면 저절로 market url이 채워짐을 웹사이트에서 볼 수 있어요. 해당 값으로 바로 톡에서 이동시켜 줍니다.
Android의 경우도 비슷해요. pkg를 넣으면 market으로 pkg기반으로 이동 시켜줘요.
일단 질문글 적고 머리좀 굴리다보니… 어떻게 해야될지 감은 잡혀서…(카카오링크 자체가 딥링크 라는걸 이제서야 알아버려서;;
뭔가 해보는중입니다…ㅋㅋ
답변 감사합니다…
@oldserpent 오오… 빙고… 이제 점점 이해 하시는듯 합니다. 이와 별도로 페북 주도의 딥링크에 대해서도 저희도 알고 있기는 하고, following할 계획은 가지고 있어요(사실 이 개념을 카카오가 먼저 도입했었죠… ㅠㅜ).
링크 받아서 url 을 수동으로 파싱해서 파라미터를 나누고 보니… 그걸 해주는 애가 있다고 삽질 하지 말라셔서 찾는중입니다… 일단 어찌됐건;; 뷰로 연결은 성공했습니다…ㅋㅋ
문제는 이제 카카오 스토리에서 딥링크 사용법과 페이스북…;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;