추천인 단축 링크 생성
공유 가능한 단축 추천인 링크를 생성하여 유저 간 어트리뷰션을 활성화하고 유기적 추천을 통한 앱 설치를 추적합니다.
버전 요구사항: 이 기능은 SDK 버전 12.1.1 이상이 필요합니다. 단축 링크는 생성 후 30일 동안 활성 상태를 유지합니다.
개요
추천인 단축 링크란
단축 링크는 길고 매개변수가 많은 Singular Link를 SMS, 소셜 미디어 또는 인앱 초대를 통해 공유하기에 편리한 간결하고 안전한 URL로 변환합니다.
단축 링크를 동적으로 생성하여 유저가 친구들에게 공유하고 앱을 다운로드하여 사용하도록 초대할 수 있습니다. 각 단축 링크는 추천한 유저를 추적하므로 바이럴 성장을 측정하고 새로운 설치를 특정 추천인에게 어트리뷰션할 수 있습니다.
구현 요구사항
필수 구성 요소
추천인 단축 링크를 생성하기 전에 다음 요소를 준비하세요:
- Singular Link: 유저를 앱 다운로드로 안내하는 기본 트래킹 링크입니다. 설정 방법은 Singular Links FAQ 를 참조하세요
- 동적 매개변수: 링크에 컨텍스트를 추가하기 위한 선택적 사용자 정의 매개변수입니다. 사용 가능한 옵션은 트래킹 링크 매개변수 에서 확인하세요
- 추천인 정보: 링크를 공유하는 유저의 이름과 ID로, 새로운 설치를 추천인에게 어트리뷰션할 수 있도록 합니다
SDK 메서드
createReferrerShortLink
사용자 정의 매개변수와 성공 및 오류 상태에 대한 콜백 핸들러를 사용하여 추천인 단축 링크를 생성합니다.
메서드 시그니처:
Singular.createReferrerShortLink(
String baseLink,
String referrerName,
String referrerId,
JSONObject parameters,
ShortLinkHandler handler
)
매개변수:
- baseLink: 원본 Singular 트래킹 링크 URL
- referrerName: 추천하는 유저의 표시 이름
- referrerId: 추천하는 유저의 고유 식별자
- parameters: 추가 동적 매개변수를 포함하는 JSONObject (선택 사항)
-
handler:
다음 메서드를 포함하는 콜백 인터페이스
onSuccess및onError(필수)
ShortLinkHandler는 두 개의 추상
메서드(onSuccess(String link) 및
onError(String error))를 정의하므로
Kotlin SAM 인터페이스가 아닙니다. 항상 두 메서드를 모두 정의한
오브젝트 표현식(Kotlin) 또는 익명 클래스(Java)로 구현하세요.
null 핸들러 또는 초기화되지 않은 SDK는
호출을 자동으로 삭제시키므로,
Singular.init()이 이 메서드를 호출하기
전에 실행되었는지 확인하세요.
onError는 유효성 검사가 실패할 때
(예: 잘못된 기본 링크) 네트워크 요청 전에 동기적으로 발생할 수 있습니다.
호출 스레드 또는 백그라운드 스레드에서 실행될 수 있도록 콜백에
방어적 null 체크를 구현하세요.
사용 예시
사용자 정의 매개변수로 단축 링크를 생성하고 성공 콜백에서 공유 로직을 구현합니다.
import org.json.JSONObject
import org.json.JSONException
// Create custom parameters for the link
val params = JSONObject()
try {
params.put("channel", "sms")
params.put("campaign_id", "summer_promo_2025")
params.put("referral_type", "friend_invite")
} catch (e: JSONException) {
Log.e("ShortLink", "Error creating parameters: ${e.message}")
}
// Generate the short referrer link
Singular.createReferrerShortLink(
"https://sample.sng.link/D52wc/cuvk?pcn=test", // Base Singular Link
"John Doe", // Referrer name
"user_12345", // Referrer ID
params, // Custom parameters
object : ShortLinkHandler {
override fun onSuccess(shortLinkURL: String) {
Log.d("ShortLink", "Generated: $shortLinkURL")
// Share the short link via Android Share Sheet
val shareIntent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT,
"Join me on this awesome app! $shortLinkURL")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))
}
override fun onError(error: String) {
Log.e("ShortLink", "Error creating link: $error")
// Handle error - retry or show user feedback
Toast.makeText(
applicationContext,
"Failed to create share link. Please try again.",
Toast.LENGTH_SHORT
).show()
}
}
)
import org.json.JSONObject;
import org.json.JSONException;
// Create custom parameters for the link
JSONObject params = new JSONObject();
try {
params.put("channel", "sms");
params.put("campaign_id", "summer_promo_2025");
params.put("referral_type", "friend_invite");
} catch (JSONException e) {
Log.e("ShortLink", "Error creating parameters: " + e.getMessage());
}
// Generate the short referrer link
Singular.createReferrerShortLink(
"https://sample.sng.link/D52wc/cuvk?pcn=test", // Base Singular Link
"John Doe", // Referrer name
"user_12345", // Referrer ID
params, // Custom parameters
new ShortLinkHandler() {
@Override
public void onSuccess(final String shortLinkURL) {
Log.d("ShortLink", "Generated: " + shortLinkURL);
// Share the short link via Android Share Sheet
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT,
"Join me on this awesome app! " + shortLinkURL);
startActivity(Intent.createChooser(shareIntent, "Share via"));
}
@Override
public void onError(final String error) {
Log.e("ShortLink", "Error creating link: " + error);
// Handle error - retry or show user feedback
Toast.makeText(
getApplicationContext(),
"Failed to create share link. Please try again.",
Toast.LENGTH_SHORT
).show();
}
}
);
구현 모범 사례
오류 처리
네트워크 장애, 잘못된 매개변수 또는 서버 문제를 관리하기 위해
onError
콜백에서 견고한 오류 처리를 구현합니다.
- 재시도 로직: 일시적인 네트워크 오류에 대해 지수 백오프를 구현하세요
- 유저 피드백: 링크 생성이 실패할 때 명확한 오류 메시지를 표시하세요
- 대체 옵션: 대체 공유 방법을 제공하세요 (예: 단축 링크 생성이 실패할 경우 전체 Singular Link 공유)
-
유효성 검사:
문제를 조기에 발견하기 위해
createReferrerShortLink를 호출하기 전에 매개변수를 검증하세요
추적 및 분석
추천인 정보를 활용하여 바이럴 루프를 구축하고 유기적 성장을 측정합니다.
모범 사례: 내부 유저 식별 시스템과 일치하는 일관된 추천인 ID를 사용하세요. 이를 통해 다음이 가능합니다:
- 새로운 설치를 특정 추천 유저에게 어트리뷰션
- 성공적인 추천에 대해 유저 보상
- 바이럴 계수 및 K-factor 지표 추적
- 가장 가치 있는 브랜드 옹호자 식별
링크 만료
공유 전략에서 30일 링크 수명 주기를 계획하세요.
중요: 단축 링크는 30일 후에 만료됩니다. 장기 캠페인 또는 지속적인 공유 기능의 경우, 주기적으로 새로운 단축 링크를 생성하거나 전체 Singular Link를 대체 옵션으로 사용하세요.
일반적인 사용 사례
인앱 추천 프로그램
개인화된 추천 링크를 통해 유저가 앱에서 직접 친구를 초대할 수 있도록 합니다.
- 보상 시스템: 추천을 추적하고 성공적인 친구 가입에 대해 유저에게 보상하세요
- 소셜 공유: SMS, WhatsApp, 이메일 및 소셜 미디어를 위해 Android Share Sheet와 연동하세요
- 개인 초대: 개인화를 위해 공유 메시지에 추천인 이름을 포함하세요
유저 생성 콘텐츠
유저가 다른 사람과 공유하고 싶은 콘텐츠를 생성할 때 공유 가능한 링크를 만듭니다.
- 콘텐츠 어트리뷰션: 어떤 콘텐츠가 가장 많은 앱 설치를 유도하는지 추적하세요
- 크리에이터 인정: 게임화를 위해 새로운 유저를 콘텐츠 크리에이터에게 어트리뷰션하세요
- 캠페인 태깅: 콘텐츠 유형 또는 카테고리에 따라 동적 매개변수를 추가하세요
이벤트 초대
어떤 참석자가 새로운 유저를 데려오는지 추적하는 이벤트 초대를 위한 고유 링크를 생성합니다.
- 이벤트 컨텍스트: 링크 매개변수에 이벤트 ID와 세부 정보를 포함하세요
- 참석자 추적: 이벤트에서 이벤트로의 바이럴 확산을 측정하세요
- 네트워크 효과: 전환율이 가장 높은 이벤트를 식별하세요