Android SDK 딥링크 구현

Singular Android SDK
다운로드 Singular Android SDK 9.2.9 버전
호환성

Android 4.0.1 (Ice Cream Sandwich) 이상

  • 본 SDK는 Play Store 4 버전 이상을 사용하는 디바이스의 Android 광고 ID를 사용합니다. 이하 버전의 디바이스는 Android ID를 사용합니다.
  • 최신 SDK 버전은 Android 4.0.1 이하 버전에서 테스트를 진행하지 않아 호환성이 보장되지 않습니다.
샘플 앱 베스트 프랙티스에 기반한 전체 SDK 연동 방법 확인을 위해 샘플 앱을 참조해 주세요.
연동 가이드

 

소개

딥링크란 앱 내의 특정 컨텐츠로 연결하는 링크를 의미합니다. 유저가 앱이 설치된 디바이스에서 딥링크를 클릭하면 앱의 특정 컨텐츠가 열리면서 유저를 특정 프로덕트로 인도하거나 유저에게 특정 경험을 제공할 수 있습니다.

Singular 트래킹 링크에는 이러한 딥링크와 디퍼드 딥링크를 포함할 수 있습니다. 자세한 내용은 딥링크 FAQ나 and the Singular 링크 FAQ를 참조하세요.

본 가이드는 다음 내용을 안내합니다.

  • 앱이 열렸을 때 이를 유발한 트래킹 링크에 접근합니다.
  • 딥링크 목적지를 읽습니다.
  • 의도한 컨텐츠를 보여 줍니다.

주의: 본 문서는 2019년 도입된 Singular의 새로운 트래킹 링크 기술인 Singular 링크를 사용하는 고객사 기준으로 기술되었습니다. 

이전 고객사는 Singular 링크 대신 이전 트래킹 링크(레가시 링크)를 사용하고 있을 수 있습니다. 레가시 링크에서 딥링크를 사용하려면 레가시 링크에서 딥링크 처리 항목을 참조하세요.

딥링크 활성화

딥링크를 활성화하려면 Singular 링크 필수 사항의 지시 사항을 따르세요.

딥링크 인텐트 필터 추가

액티비티 내에서 딥링크 지원을 활성화하려면 AndroidManifest.xml 파일에 인텐트 필터를 다음처럼 추가하세요. 딥링크로 열려야 할 액티비티가 하나 이상인 경우, 각 액티비티에 인텐트 필터를 추가해야 합니다.

<activity> 
    <intent-filter>
        <data android:scheme="singular-example" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

딥링크 처리

Singular SDK는 핸들러 동작 원리를 사용해서 앱을 열리게 한 트래킹 링크의 세부 사항을 확인합니다.

핸들러를 사용하려면 다음 코드를 액티비티의 onCreate 메서드에 추가하세요. 다시 강조하지만, 이 단계는 딥링크를 통해 열리는 모든 액티비티에 적용되어야 합니다.

  • SingularConfig 오브젝트 생성시 withSingularLink를 호출합니다.
  • SingularLinksHandler 내에서 onResolved 메서드를 오버라이드하여 딥링크를 읽고 처리하도록 구현합니다.
protected void onCreate(Bundle savedInstanceState) {
    SingularConfig config = new SingularConfig(apiKey, secretKey);
    config.withSingularLink(getIntent(), new SingularLinkHandler() {
        @Override
        public void onResolved(SingularLinkParams params) {
            // The deep link destination, as configured in the Manage Links page
            String deeplink = params.getDeeplink();
            
            // The passthrough parameters added to the link, if any.
            String passthrough = params.getPassthrough();
            
            // Whether the link configured as a deferred deep link.
            boolean isDeferred = params.isDeferred();
            
            // Add deep link handling code here
        }
    });
    Singular.init(context, config);
}

주의: SingularLinkHandler는 앱이 Singular 링크로부터 열린 경우에만 호출됩니다. 자세한 사항은 Singular Links FAQ를 참고하세요. 다른 유형의 딥링크에 의해서는 이 핸들러가 발동되지 않습니다.

디퍼드 딥링크 타임아웃 수정

기본적으로 앱이 특정 디바이스에서 첫 번째 세션을 보내면 Singular 서버가 관련 기록을 찾아서 해당 디바이스와 일치하는 디퍼드 딥링크가 있는지 확인합니다. 자세한 내용은 디퍼드 딥링크(deferred deep links)란? 항목을 확인하세요. 일치하는 디퍼드 딥링크를 찾는 경우 이를 처리할 수 있도록 앱으로 다시 보냅니다. 60초 내에 찾지 못하는 경우 서버는 검색 작업을 중지합니다.

이러한 타임아웃 값은 SingularConfig 오브젝트 생성시 withDDLTimeoutInSec 호출을 통해 수정할 수 있습니다. 다음은 타임아웃을 30초로 변경하는 예제입니다.

SingularConfig config = new SingularConfig(apiKey, secretKey);
config.withSingularLink(getIntent(), new SingularLinkHandler() {
    ...
});
config.withDDLTimeoutInSec(30);

레가시 링크에서 딥링크 처리

기존 Singular 고객사라면 새로 추가된 Singular 링크가 아니라 Singular의 예전 트래킹 링크 동작 원리인 레가시 트래킹 링크를 사용하고 있을 수 있습니다.  Create LinkView Links 페이지에서 관리되는 레가시 링크에서도 딥링크와 디퍼드 딥링크 기능을 제공합니다.

레가시 링크로 딥링크를 처리하는 경우 아래 예제처럼 SingularConfig 오브젝트 생성시 withDDLHandler 메서드를 사용하세요. 이후 DeferredDeepLinkHandler 내에서 handleLink를 오버라이드하여 링크 문자열을 처리하시면 됩니다.

주의: Singular 링크와 레가시 링크 모두에서 withDDLTimeoutInSec를 사용하여 디퍼드 딥링크 타임아웃을 설정할 수 있습니다.

SingularConfig config = new SingularConfig(apiKey, secretKey);
config.withDDLHandler(new DeferredDeepLinkHandler() {
    @Override
    public void handleLink(String link) {
        // Deep link handling code
        // Note: handleLink() is invoked in the UI (main) thread
    }
});

 

도움이 되었습니까?
0명 중 0명이 도움이 되었다고 했습니다.