Unity SDK - 支持推荐人短链接

文档

创建简短的推荐人链接

生成简短、可共享的推荐人链接,以实现用户到用户归因并跟踪来自有机推荐的应用程序安装。

版本要求:此功能需要 SDK 1.0.0 或更高版本。短链接在创建后 30 天内保持有效。

短链接可将冗长、充满参数的奇异链接转换为紧凑、安全的 URL,便于通过短信、社交媒体或应用程序内的邀请进行分享。

动态创建短链接,以便用户与朋友分享,邀请他们下载和使用您的应用程序。 每个短链接都会跟踪推荐用户,使您能够衡量病毒式增长,并将新安装归功于特定的拥护者。


在创建推荐人短链接之前,请先收集这些元素:

  • 单一链接:引导用户下载应用程序的基本跟踪链接。有关设置说明,请参阅奇异链接常见问题
  • 动态参数:用于为链接添加上下文的可选自定义参数。查看跟踪链接参数中的可用选项
  • 推荐人信息:分享链接的用户的姓名和 ID,以便将新安装归因于推荐人

生成带有自定义参数和成功与错误状态回调处理程序的短链接。

方法签名

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

参数

  • baseLink:原始奇异追踪链接 URL
  • referrerName:引用用户的显示名称:引用用户的显示名称
  • referrerId:推荐用户的唯一标识符
  • parameters:参数:包含附加动态参数的字典(可选,如果没有则为空
  • 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);
    }
}

在回调中实施强大的错误处理,以管理网络故障、无效参数或服务器问题。

  • 重试逻辑:针对瞬时网络错误实施指数回退
  • 用户反馈:链接创建失败时显示清晰的错误信息
  • 回退选项:提供其他共享方式(例如,如果短链接创建失败,则共享完整的奇异链接
  • 验证:在调用CreateReferrerShortLink 之前验证参数,以便及早发现问题

利用推荐人信息建立病毒循环并衡量有机增长。

最佳实践:使用与内部用户识别系统一致的推荐人 ID。 这样您就可以

  • 将新安装归因于特定的推荐用户
  • 奖励成功推荐的用户
  • 跟踪病毒系数和 K 因子指标
  • 识别最有价值的品牌拥护者

在分享策略中规划 30 天的链接生命周期。

重要:短链接在 30 天后失效。对于长期活动或持续分享功能,应定期生成新的短链接,或使用完整的奇异链接作为备用。


让用户可以通过个性化推荐链接直接从应用中邀请朋友。

  • 奖励系统:跟踪推荐并奖励成功注册朋友的用户
  • 社交分享:与短信、WhatsApp、电子邮件和社交媒体的平台原生共享表集成
  • 个人邀请:在共享信息中包含推荐人姓名,实现个性化

当用户生成想要与他人分享的内容时,创建可分享链接。

  • 内容归因:跟踪哪些内容推动了最多的应用安装
  • 创作者识别:将新用户归属于内容创作者,实现游戏化
  • 活动标签:根据内容类型或类别添加动态参数

为活动邀请函生成唯一链接,跟踪哪些与会者带来了新用户。

  • 活动背景:在链接参数中包含活动 ID 和详细信息
  • 与会者跟踪:衡量活动之间的病毒传播
  • 网络效应:识别转换率最高的活动