카카오톡 인앱 브라우저에서 Branch 딥링크로 앱 열기 가능 여부 문의

안녕하세요.

카카오톡 메시지에서 기프트카드 등록 링크를 열었을 때, 자사 앱이 설치된 고객은 앱의 기프트카드 등록 화면으로 이동시키고자 합니다.

현재 일반 웹 URL에 ?code={코드값}을 포함해 발송하고 있으며, 웹 진입 후 Branch 딥링크를 생성해 앱 열기를 시도하고 있습니다. 하지만 카카오톡 인앱 브라우저에서는 앱으로 전환되지 않고 인앱 브라우저에 계속 머무르는 현상이 있습니다.

확인하고 싶은 사항은 아래와 같습니다.

  1. 카카오톡 인앱 브라우저에서 외부 앱 열기가 제한되는 정책 또는 조건이 있는지 궁금합니다. iOS와 Android의 차이도 있는지 확인 부탁드립니다.
  2. kakaotalk://web/openExternal?url=... 방식은 외부 브라우저 전환 용도로 이해하고 있는데, 이 방식이 앱 딥링크 실행에도 공식적으로 지원되는 방식인지 궁금합니다.
  3. 카카오톡 인앱 브라우저에서 앱 전환을 지원하기 위해 권장하는 공식 연동 방식이 있다면 안내 부탁드립니다.

앱 전환이 제한되는 경우, 사용자에게 외부 브라우저 열기를 안내하는 방식 외에 권장되는 대안도 함께 문의드립니다.

감사합니다.

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 전체 앱 목록에 표시되는 ID 값 입니다.
숫자로된 ID 입니다
ex) 123456

[@tim.l @woody.ho]

안녕하세요. 앱 ID는 내부 확인 후 추가 전달드리겠습니다!

우선 일반 정책 기준으로 확인 부탁드립니다.
카카오톡 인앱 브라우저에서 페이지 진입 후 JavaScript의
location.replace() 또는 window.location.href로 Branch URL,
Universal Link, 외부 앱 스킴을 실행하는 경우 제한되는 정책이 있는지 궁금합니다.

페이지 최초 클릭 URL이 아니라 비동기로 API 응답을 받은 뒤 실행되는
스크립트 이동이라 사용자 제스처 없는 앱 호출로 차단되는지,
카카오톡에서 권장하는 처리 방식이 있는지 안내 부탁드립니다.

현재 프론트 구현은 아래와 같습니다.

카카오톡에서 최초 진입하는 URL은 ?code=...가 포함된 일반 웹 URL이며,
페이지 로드 후 JavaScript가 Branch 링크 생성 API를 호출합니다.
생성 API 응답의 link로 이동해 앱 열기를 시도하고 있습니다.

const isKakaoTalkInAppBrowser = () =>
  /KAKAOTALK/i.test(navigator.userAgent);

const createBranchDeeplink = async () => {
  const fallbackUrl =
    `${window.location.href}&_code_branch=1`;

  const response = await fetch(
    `${codeBaseUrl}/deeplink/createWeb`,
    {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        deeplinkPath: "",
        desktopUrl: fallbackUrl,
        canonicalUrl: fallbackUrl,
        customParam: "code",
      }),
    }
  );

  const { link } = await response.json();
  return link;
};

const handlePageEntry = async () => {
  const code = new URLSearchParams(location.search).get("code");
  if (!code) return;

  const deeplinkUrl = await createBranchDeeplink();

  if (isKakaoTalkInAppBrowser()) {
    location.href =
      `kakaotalk://web/openExternal?url=${encodeURIComponent(deeplinkUrl)}`;
    return;
  }

  location.replace(deeplinkUrl);
};

카카오톡 인앱 브라우저에서는 kakaotalk://web/openExternal 호출 뒤에도
외부 브라우저 또는 앱으로 전환되지 않고 카카오톡 인앱 브라우저에 남아 있습니다.

이 경우 페이지 로드 후 JavaScript로 생성·이동하는 Branch URL이
카카오톡 인앱 브라우저에서 제한되는지,
또는 공식적으로 권장하는 앱 전환 방식이 있는지 문의드립니다.

_code_branch=1이 포함된 fallback URL로 재진입한 경우에는 Branch 링크를 재생성하지 않도록 별도 처리하고 있습니다.

안녕하세요.

카카오톡 메시지에서 기프트카드 등록 링크를 열었을 때

메시지 발송 수단이 어떻게 되나요?

데브톡에서는 디벨로퍼스관련 설정, API, SDK를 안내드리고 있으므로
해당 메시지 발송 제공 부서 또는
카카오톡의 기능인 인앱브라우저는 해당 고객센터 통해 유관 부서의 답변을 받으셔야합니다.