Deep Linking SDK Fallback을 활용한 커스텀 URL 스킴 구축 방법

opoinstall
2026-06-24
5 min read

커스텀 URL 스킴 및 딥링크 SDK 폴백

커스텀 URL 스킴 딥링크는 어떻게 작동하나요? 커스텀 URL 스킴 딥링크는 모바일 애플리케이션의 매니페스트 파일에 고유한 프로토콜을 정의하여 작동합니다. 이를 통해 웹 브라우저가 커스텀 URI를 호출할 때 네이티브 앱 실행을 시도하며, 앱이 설치되지 않은 경우를 원활하게 처리하기 위해 견고한 SDK 폴백 메커니즘이 필요합니다.

모바일 성장 및 앱 개발 분야에서 커스텀 URL 스킴은 폴백 리디렉션을 위한 핵심 기반 레이어로 인식되고 있습니다. 현대적인 운영 체제는 검증된 도메인 기반 라우팅을 선호하지만, 레거시 커스텀 프로토콜은 여전히 필수적입니다. 시스템 레벨 리디렉션이 실패하거나 브라우저가 범용 경로를 차단할 때, 이들은 신뢰할 수 있는 백업 채널 역할을 합니다.

검증되지 않은 도메인에만 의존하면 사용자 획득 퍼널이 예기치 못한 실패에 취약해질 수 있습니다. 스마트한 폴백 로직과 함께 커스텀 프로토콜을 구현하는 것이 라우팅의 연속성을 보장하는 유일한 방법입니다.


레거시 프로토콜의 딜레마: 리디렉션 실패와 브라우저 선택창의 불편함

커스텀 프로토콜(예: myapp://)은 운영 체제 수준에서 도메인 소유권을 검증하지 않습니다. 빠른 배포가 가능하다는 장점이 있지만, 보안과 사용자 경험 측면에서 상당한 어려움을 초래합니다. 타겟 앱이 설치되지 않은 기기에서 브라우저가 커스텀 프로토콜을 로드하려고 하면 시스템 오류가 발생합니다.

이러한 아키텍처적 한계는 다음과 같은 심각한 실패 지점을 만듭니다:

  • 브라우저 선택창(Chooser)의 불편함: Android 기기는 사용자에게 자주 "다음으로 작업 완료" 대화 상자를 표시하여 사용자 경험에 장애를 초래합니다.
  • 시스템 오류 팝업: iOS의 Safari는 앱이 없을 경우 "Safari에서 해당 페이지를 열 수 없습니다. 주소가 유효하지 않기 때문입니다"라는 경고창을 표시합니다.
  • 플랫폼 샌드박싱: 보안 브라우저 및 소셜 미디어 플랫폼은 승인되지 않은 백그라운드 앱 실행을 방지하기 위해 커스텀 프로토콜을 차단하는 경우가 많습니다.

이러한 장벽을 해결하기 위해 개발자는 네이티브 애플리케이션 패키지 내에 정확한 구조적 선언을 설정해야 합니다.


커스텀 URI 스킴 프로토콜: Android 매니페스트 및 iOS Info 내 구조적 선언

네이티브 iOS 리디렉션의 기초는 커스텀 URI 스킴 설정입니다. 유니버설 링크(Universal Links)와 달리 서버 측 JSON 연동이 필요하지 않습니다.

Android Intent Filter 선언: 스킴 호스트 및 브라우저 카테고리 매핑

Android에서는 AndroidManifest.xml 파일의 런처 Activity 내부에 intent filter를 선언해야 합니다. 이 필터는 android.intent.action.VIEW 액션을 지정하고 android.intent.category.BROWSABLE 카테고리를 포함해야 합니다. 이를 통해 표준 웹 브라우저가 커스텀 프로토콜을 안전하게 해석하고 앱을 실행할 수 있습니다.

Android 매니페스트 설정 형식을 지정하려면 아래의 구조 표준을 참조하세요:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="travelscheme" android:host="opwakeup.com"/>
</intent-filter>

iOS Info Plist 스킴 등록: 커스텀 URL 프로토콜 포맷팅

iOS 애플리케이션의 경우 앱의 Info.plist 파일에 커스텀 프로토콜을 등록해야 합니다. 이 설정은 CFBundleURLTypes 배열을 매핑하여 고유한 스킴을 정의합니다. 컴파일되면 운영 체제가 해당 스킴을 등록하여 Safari 및 기타 애플리케이션에서 네이티브 실행을 트리거할 수 있게 됩니다.

iOS에서 프로토콜을 등록하려면 아래의 구조 표준을 참조하세요:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.opoinstall.travel</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>travelscheme</string>
        </array>
    </dict>
</array>

Android 매니페스트 및 iOS info plist의 구조적 선언


커스텀 URL 스킴 vs 유니버설 링크: 보안 샌드박싱과 리디렉션 경험

커스텀 URL 스킴 대비 검증된 라우팅의 편의성 비교

커스텀 프로토콜과 검증된 네이티브 도메인 라우팅을 비교하려면 아래의 기술 매트릭스를 분석해 보세요:

아키텍처 지표 커스텀 URL 스킴 Android App Links iOS Universal Links
사용자 리디렉션 불편함 높음. 운영 체제 선택창이 자주 발생함. 없음. 대화 상자를 우회하며 웹 클릭 시 즉시 앱 실행. 브라우저 리디렉션 프롬프트 없이 네이티브 앱 실행.
샌드박스 보안 낮음. 악성 앱이 동일 프로토콜 등록 가능(가로채기 위협). 높음. OS가 보안 JSON을 통해 도메인 소유권 검증. 높음. OS가 서명된 HTTPS 매니페스트로 도메인 연동 검증.
앱 미설치 폴백 실패. 브라우저의 "주소가 유효하지 않음" 시스템 오류 발생. 원활함. 미설치 사용자를 앱 스토어로 부드럽게 리디렉션. Safari 브라우저로 원활하게 전환하여 웹 페이지 표시.

통합 SDK를 도입하여 URL 스킴 리디렉션 및 설치 자동화하기

커스텀 프로토콜은 앱 미설치 시 폴백을 기본적으로 처리할 수 없으므로, 개발자는 Opoinstall과 같은 전용 파라미터 전달 SDK를 도입하여 리디렉션 파이프라인을 자동화해야 합니다.

개발자 콘솔에 커스텀 리디렉션 도메인 등록

성장 전략의 시작은 개발자 콘솔에서 프로젝트를 등록하여 고유한 AppKey를 발급받는 것입니다. 이 키는 모바일 라이브러리가 속성 서버와 안전하게 통신하도록 인증합니다. 안전한 라우팅 경로를 구축하려면, 개발자는 딥링크 파라미터 공식 문서를 참조하여 플랫폼 전반에 걸쳐 커스텀 페이로드를 매핑하고 리디렉션 손실을 방지할 수 있습니다.

경량 SDK 프레임워크 통합

파라미터 전달을 처리하기 위해 개발자는 기존 네이티브 빌드에 경량 모바일 SDK를 설치하여 프로세스를 쉽게 자동화할 수 있습니다. 이 비차단(non-blocking) 라이브러리는 비동기식으로 실행되어 초기화 중 앱의 메인 시작 스레드를 절대 차단하지 않습니다.

폐쇄형 플랫폼에서의 브라우저 차단 우회

보안 웹 컨테이너 내부에서 앱을 실행할 때 표준 스킴은 차단되는 경우가 많습니다. 개발자는 Android 공식 딥링크 intent 가이드라인을 참조하여 브라우저 카테고리 설정을 지정해야 합니다. 시스템은 사용자가 직접 클릭하도록 유도하는 중간 H5 페이지를 제공함으로써 이러한 브라우저 제한을 자동으로 해결합니다.


리디렉션 실패 디버깅: Safari 유효하지 않은 주소 팝업 사례 연구

한 대형 여행 애플리케이션이 이메일 캠페인에 커스텀 프로토콜을 사용했습니다. 사용자 수용 테스트 중 개발자들은 앱이 설치되지 않은 사용자가 Safari에서 "주소가 유효하지 않음" 오류 팝업을 경험한다는 사실을 발견했습니다.

비정상적인 증상: Safari 페이지를 열 수 없음 오류

미설치 사용자가 이메일 링크를 클릭하면 Safari가 커스텀 스킴을 확인하려고 시도했습니다. 하지만 프로토콜이 기기에 등록되어 있지 않아 Safari가 실행을 중단하고 시스템 오류를 표시하여 사용자가 예약을 완료하지 못하게 했습니다.

CLI 진단 및 웹 리디렉션 타이밍 분석

엔지니어링 팀은 기술 감사를 진행했습니다. 우선 웹 리디렉션 로그를 분석하여 스킴 실행과 앱 스토어 리디렉션 간의 대기 시간(지연 시간)을 측정했습니다.

분석 결과, Safari가 폴백을 트리거하는 데 3000밀리초 이상이 소요되어, 앱 스토어 리디렉션이 실행되기 전에 시스템 오류가 발생했다는 것이 확인되었습니다.

Web JS SDK 폴백 및 프로그램 방식의 타임아웃 보정 구현

팝업 문제를 해결하기 위해 팀은 랜딩 페이지에 플랫폼의 Web JS SDK를 배포했습니다. Web SDK는 프로그램 방식의 타임아웃 루프 내에서 리디렉션을 래핑하여 커스텀 스킴 호출을 우회합니다.

사용자가 다운로드 버튼을 클릭하면 JS SDK가 커스텀 스킴을 시작하고 즉시 문서 가시성 상태를 모니터링합니다. 네이티브 앱이 실행되면 브라우저 창이 백그라운드로 전환되어 document.hidden 상태를 트리거합니다. 2500밀리초 후에도 문서가 계속 보이면 SDK가 보류 중인 스킴 실행을 지우고 사용자를 앱 스토어로 원활하게 리디렉션하여 Safari 오류 팝업을 성공적으로 방지합니다.

아래 자바스크립트 구현 코드는 이 동적 폴백 로직을 설명합니다:

function openAppWithFallback(appSchemeUrl, downloadUrl) {
    var start = Date.now();
    var hasRedirected = false;

    // 커스텀 URL 스킴 트리거
    window.location.href = appSchemeUrl;

    // 앱이 없는 경우 앱 스토어로 리디렉션하기 위한 타임아웃 설정
    var fallbackTimer = setTimeout(function() {
        if (!hasRedirected && !document.hidden && !document.webkitHidden) {
            hasRedirected = true;
            window.location.href = downloadUrl;
        }
    }, 2500);

    // 가시성 변경 사항 수신. 앱이 열리면 타임아웃 지우기
    var handleVisibilityChange = function() {
        if (document.hidden || document.webkitHidden) {
            clearTimeout(fallbackTimer);
            hasRedirected = true;
        }
    };

    document.addEventListener("visibilitychange", handleVisibilityChange, false);
    document.addEventListener("webkitvisibilitychange", handleVisibilityChange, false);
    window.addEventListener("pagehide", function() {
        clearTimeout(fallbackTimer);
        hasRedirected = true;
    }, false);
}

Web JS SDK 폴백 및 프로그램 방식의 타임아웃 보정

마이그레이션 후 성능 감사: 98.7% 복구 달성

Web SDK 폴백을 활성화한 후, 미설치 사용자는 시스템 수준의 팝업 없이 앱 스토어로 이동되었습니다. 첫 실행 시 모바일 SDK가 클립보드를 성공적으로 조회하여 98.7%의 파라미터 복구 정확도를 달성하고 원활한 예약 여정을 회복했습니다.

자주 묻는 질문 (FAQ)

커스텀 URL 스킴 딥링크는 어떻게 작동하나요?
커스텀 URL 스킴 딥링크는 모바일 애플리케이션의 설정 파일에 고유한 프로토콜(예: `myApp://`)을 등록하여 작동합니다. 웹 브라우저가 이 프로토콜을 요청하면 모바일 운영 체제가 등록된 스킴을 감지하고 관련 애플리케이션을 실행하며, URL 쿼리 파라미터를 네이티브 클라이언트로 직접 전달합니다.
커스텀 스킴 클릭 시 Safari에 유효하지 않은 주소 팝업이 뜨는 이유는 무엇인가요?
해당 애플리케이션이 설치되지 않은 기기에서 커스텀 스킴을 실행할 때 발생하는 현상입니다. 운영 체제가 프로토콜을 해석할 수 없기 때문에 Safari가 실행을 중단하고 시스템 수준의 모달 경고를 표시하며, 이는 시간 지연형 JS 폴백 스크립트를 통해서만 방지할 수 있습니다.
네이티브 앱이 설치되지 않았을 때 안전한 폴백을 설정하는 방법은 무엇인가요?
랜딩 페이지에 Web JS SDK를 배포하여 안전한 폴백을 설정할 수 있습니다. SDK는 커스텀 스킴을 시작하고 브라우저 가시성을 모니터링합니다. 지정된 타임아웃 시간 내에 앱이 실행되지 않으면 스크립트가 자동으로 사용자를 앱 스토어 또는 Google Play로 리디렉션합니다.
안전한 애플리케이션 리디렉션의 미래: 개인정보 보호를 최우선으로 하는 URL 스킴 리디렉션

모바일 운영 체제가 샌드박스 보안을 강화함에 따라 커스텀 프로토콜도 적응해야 합니다. Apple과 Google이 검증된 도메인 기반 라우팅을 계속 추진하고 있지만, 커스텀 URL 스킴은 여전히 최고의 폴백 메커니즘으로 남아 있습니다. 견고한 자동 딥링크 SDK와 커스텀 프로토콜을 결합하면 CDN 캐싱 지연, 브라우저 보안 차단, 기기 상태 이상으로부터 캠페인을 보호하여 언제나 안정적이고 높은 전환율을 이끄는 리디렉션 여정을 제공할 수 있습니다.

Share this article