リファラー短縮リンクの作成
共有可能な短縮リファラーリンクを生成して、ユーザー間のアトリビューションを 有効にし、オーガニックリファラルからのアプリインストールを追跡します。
バージョン要件: この機能には 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は2つの抽象
メソッド(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と詳細を 含めてください
- 参加者追跡: イベントからイベントへのバイラル拡散を 測定してください
- ネットワーク効果: 最も高いコンバージョン率を持つイベントを 特定してください