Unity SDK - 리퍼러 쇼트 링크 지원

문서

짧은 리퍼러 링크 생성하기

사용자 간 어트리뷰션을 가능하게 하는 공유 가능한 짧은 리퍼러 링크를 생성하고 오가닉 추천을 통해 앱 설치를 추적하세요.

버전 요구 사항: 이 기능을 사용하려면 SDK 버전 1.0.0 이상이 필요합니다. 짧은 링크는 생성 후 30일 동안 활성 상태로 유지됩니다.

짧은 링크는 매개변수로 가득 찬 긴 Singular 링크를 SMS, 소셜 미디어 또는 인앱 초대를 통해 공유하기 편리한 작고 안전한 URL로 변환합니다.

짧은 링크를 동적으로 생성하여 사용자가 친구와 공유하여 앱을 다운로드하고 사용하도록 초대할 수 있습니다. 각 짧은 링크는 추천한 사용자를 추적하여 바이럴 성장을 측정하고 특정 지지자에게 신규 설치를 할당할 수 있습니다.


짧은 리퍼러 링크를 만들기 전에 다음 요소를 수집하세요:

  • Singular 링크: 사용자를 앱 다운로드로 안내하는 기본 추적 링크입니다. 설정 지침은 Singular 링크 FAQ를참조하세요.
  • 동적 파라미터: 링크에 컨텍스트를 추가하기 위한 선택적 사용자 지정 매개변수입니다. 추적 링크 파라미터에서사용 가능한 옵션 보기
  • 리퍼러 정보: 링크를 공유하는 사용자의 이름과 ID로, 신규 인스톨을 리퍼러에게 어트리뷰션할 수 있도록 합니다.

성공 및 오류 상태에 대한 사용자 지정 파라미터와 콜백 핸들러가 포함된 짧은 리퍼러 링크를 생성합니다.

메서드 서명:

public static void CreateReferrerShortLink(
    string baseLink,
    string referrerName,
    string referrerId,
    Dictionary<string, string> parameters,
    Action<string, string> callback
)

파라미터:

  • baseLink: 원본 Singular 추적 링크 URL
  • referrerName: 추천 사용자의 표시 이름
  • referrerId: 추천 사용자의 고유 식별자
  • 매개변수: 추가 동적 매개변수가 포함된 딕셔너리(선택 사항, 없는 경우 null 전달)
  • callback: 파라미터가 포함된 콜백 함수 (string shortLinkURL, string error)

사용자 지정 매개변수가 포함된 짧은 링크를 만들고 성공 콜백에 공유 로직을 구현합니다.

C#
using UnityEngine;
using Singular;
using System.Collections.Generic;

public class ReferralManager : MonoBehaviour
{
    public void ShareReferralLink()
    {
        // Create custom parameters for the link
        Dictionary<string, string> parameters = new Dictionary<string, string>()
        {
            { "channel", "sms" },
            { "campaign_id", "summer_promo_2025" },
            { "referral_type", "friend_invite" }
        };

        // Generate the short referrer link
        SingularSDK.CreateReferrerShortLink(
            "https://sample.sng.link/D52wc/cuvk?pcn=test",  // Base Singular Link
            "John Doe",                                      // Referrer name
            "user_12345",                                    // Referrer ID
            parameters,                                      // Custom parameters
            OnShortLinkCreated                               // Callback
        );
    }

    // Callback method that receives the short link URL or error
    private void OnShortLinkCreated(string shortLinkURL, string error)
    {
        if (!string.IsNullOrEmpty(shortLinkURL))
        {
            // Success - short link was created
            Debug.Log($"Generated short link: {shortLinkURL}");

            // Share the link using your preferred sharing method
            ShareLink(shortLinkURL);
        }
        else if (!string.IsNullOrEmpty(error))
        {
            // Error occurred during link creation
            Debug.LogError($"Error creating short link: {error}");

            // Handle error - retry or show user feedback
            ShowErrorMessage("Failed to create share link. Please try again.");
        }
    }

    private void ShareLink(string shortLinkURL)
    {
        // Example: Use Unity's native share functionality
        string shareMessage = $"Join me on this awesome app! {shortLinkURL}";

        #if UNITY_ANDROID
        ShareOnAndroid(shareMessage);
        #elif UNITY_IOS
        ShareOnIOS(shareMessage);
        #else
        // Fallback: Copy to clipboard
        GUIUtility.systemCopyBuffer = shortLinkURL;
        Debug.Log("Link copied to clipboard");
        #endif
    }

    #if UNITY_ANDROID
    private void ShareOnAndroid(string message)
    {
        using (AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent"))
        using (AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent"))
        {
            intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
            intentObject.Call<AndroidJavaObject>("setType", "text/plain");
            intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), message);

            using (AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            using (AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity"))
            {
                AndroidJavaObject chooser = intentClass.CallStatic<AndroidJavaObject>(
                    "createChooser", intentObject, "Share via"
                );
                currentActivity.Call("startActivity", chooser);
            }
        }
    }
    #endif

    #if UNITY_IOS
    private void ShareOnIOS(string message)
    {
        // iOS native sharing implementation
        // You can use a plugin like NativeShare or implement UIActivityViewController
        Debug.Log($"Sharing on iOS: {message}");
    }
    #endif

    private void ShowErrorMessage(string message)
    {
        // Your UI error display logic
        Debug.LogWarning(message);
    }
}

콜백에 강력한 오류 처리 기능을 구현하여 네트워크 장애, 잘못된 매개변수 또는 서버 문제를 관리하세요.

  • 재시도 로직: 일시적인 네트워크 오류에 대한 지수 백오프를 구현하세요.
  • 사용자 피드백: 링크 생성 실패 시 명확한 오류 메시지 표시
  • 폴백 옵션: 대체 공유 방법 제공(예: 짧은 링크 생성에 실패한 경우 전체 Singular 링크 공유)
  • 유효성 검사: CreateReferrerShortLink 으로 호출하기 전에 매개변수를 확인하여 문제를 조기에 포착하세요.

리퍼러 정보를 활용하여 바이럴 루프를 구축하고 유기적 성장을 측정하세요.

모범 사례: 내부 사용자 식별 시스템과 일치하는 일관된 리퍼러 ID를 사용하세요. 이를 통해 다음을 수행할 수 있습니다:

  • 특정 추천 사용자에게 신규 설치 속성 부여
  • 성공적인 추천에 대해 사용자에게 보상 제공
  • 바이럴 계수 및 K-요인 지표 추적
  • 가장 가치 있는 브랜드 옹호자 식별

공유 전략에서 30일의 링크 수명 주기를 계획하세요.

중요: 짧은 링크는 30일 후에 만료됩니다. 장기 캠페인 또는 지속적인 공유 기능의 경우 주기적으로 새로운 짧은 링크를 생성하거나 전체 Singular 링크를 대체로 사용하세요.


맞춤화된 추천 링크를 통해 사용자가 앱에서 직접 친구를 초대할 수 있도록 하세요.

  • 보상 시스템: 추천을 추적하고 성공적인 친구 가입에 대해 사용자에게 보상을 제공하세요.
  • 소셜 공유: SMS, WhatsApp, 이메일, 소셜 미디어를 위한 플랫폼 기본 공유 시트와 연동하세요.
  • 개인 초대: 개인화를 위해 공유 메시지에 추천인 이름을 포함하세요.

사용자가 다른 사람들과 공유하고 싶은 콘텐츠를 생성할 때 공유 가능한 링크를 생성하세요.

  • 콘텐츠 어트리뷰션: 어떤 콘텐츠가 가장 많은 앱 설치를 유도하는지 추적하세요.
  • 크리에이터 인식: 게임화를 위해 신규 사용자를 콘텐츠 크리에이터에게 어트리뷰션하세요.
  • 캠페인 태깅: 콘텐츠 유형 또는 카테고리에 따라 동적 파라미터 추가

이벤트 초대를 위한 고유 링크를 생성하여 어떤 참석자가 신규 사용자를 데려왔는지 추적할 수 있습니다.

  • 이벤트 컨텍스트: 링크 매개변수에 이벤트 ID 및 세부 정보를 포함하세요.
  • 참석자 추적: 이벤트에서 이벤트까지 바이럴 확산 측정
  • 네트워크 효과: 전환율이 가장 높은 이벤트 식별