短いリファラーリンクの作成
ユーザー間のアトリビューションを可能にし、オーガニックな紹介からのアプリのインストールを追跡する、共有可能な短いリファラーリンクを生成します。
バージョン要件:この機能を使用するには、SDKバージョン1.0.0以降が必要です。短いリンクは、作成後30日間有効です。
概要
ショートリファラーリンクとは
ショートリンクは、長い、パラメータいっぱいのシンギュラーリンクを、SMS、ソーシャルメディア、アプリ内招待で共有するのに便利な、コンパクトで安全なURLに変換します。
ショートリンクを動的に作成することで、ユーザーがお友達と共有し、アプリのダウンロードや使用を招待することができます。 各ショートリンクは参照ユーザーを追跡するので、バイラルの成長を測定し、新規インストールを特定の支持者に帰属させることができます。
実装要件
必要なコンポーネント
ショートリファラーリンクを作成する前に、これらの要素を集めてください:
- 単一リンク:アプリのダウンロードにユーザーを誘導するベーストラッキングリンク。設定方法については、シンギュラーリンクのFAQを参照してください。
- 動的パラメータ:リンクにコンテキストを追加するオプションのカスタムパラメータ。トラッキングリンクパラメータで利用可能なオプションを見る
- リファラー情報:リンクを共有するユーザーの名前と ID を入力して、新規インストールのリファラーへの帰属を可能にします。
SDKメソッド
CreateReferrerShortLink
カスタムパラメータと成功およびエラー状態のコールバックハンドラを使用して、短いリファラーリンクを生成します。
メソッドのシグネチャ
public static void CreateReferrerShortLink(
string baseLink,
string referrerName,
string referrerId,
Dictionary<string, string> parameters,
Action<string, string> callback
)
パラメータ:
- baseLink:元の Singular トラッキングリンクの URL。
- referrerName:参照元ユーザーの表示名
- referrerId:参照元ユーザーの一意な識別子
- parameters:追加の動的パラメータを含む辞書 (オプション。ない場合は null を渡す)
-
コールバック:パラメータを含むコールバック関数
(string shortLinkURL, string error)
使用例
カスタムパラメータでショートリンクを作成し、成功コールバックで共有ロジックを実装します。
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日で失効します。長期的なキャンペーンや永続的な共有機能の場合は、定期的に新しいショートリンクを生成するか、予備として完全なシンギュラーリンクを使用してください。
一般的な使用例
アプリ内紹介プログラム
パーソナライズされた紹介リンクを使って、ユーザーがアプリから直接友達を招待できるようにします。
- 報酬システム:紹介者を追跡し、友達登録に成功したユーザーに報酬を与えます。
- ソーシャル共有:SMS、WhatsApp、Eメール、ソーシャルメディア用のプラットフォームネイティブの共有シートと統合します。
- パーソナライズされた招待:パーソナライズするために紹介者の名前を共有メッセージに含めることができます。
ユーザー生成コンテンツ
ユーザーが他のユーザーと共有したいコンテンツを作成した場合、共有可能なリンクを作成します。
- コンテンツのアトリビューション:どのコンテンツが最もアプリのインストールを促進したかを追跡
- クリエイターの認識:新規ユーザーをコンテンツ作成者に帰属させ、ゲーミフィケーションを実現します。
- キャンペーンタグ付け:コンテンツの種類やカテゴリーに基づいた動的なパラメータを追加
イベント招待
どの出席者が新規ユーザーを連れてきたかを追跡するイベント招待用のユニークなリンクを生成します。
- イベントコンテキスト:リンクパラメータにイベントIDと詳細を含める
- 参加者のトラッキング:イベントからイベントへのバイラル拡散を測定
- ネットワーク効果:コンバージョン率の高いイベントを特定