紹介コードの入力欄

動画(TikTok・YouTube など)では、説明欄にリンクを置けないことが多く、「動画でコードを伝え、ユーザーがアプリで入力する」のが主な流れになります。入力欄がないアプリでは、こうした紹介を 1 件も計測できません。

入力欄は、次の 3 つの形から選べます(以下は Swift の例です)。

a. 画面に直接置く

ペイウォール・設定・オンボーディングなど、どこにでも置けます。

CreatorCodeInputView(rcAppUserID: Purchases.shared.appUserID) { _ in
    // 適用が完了したとき(RevenueCat の属性を設定し直す)
    Purchases.shared.attribution.setAttributes(GoAlong.attributionAttributes)
} onSkip: {
    // 「あとで」を押したとき
}

入力欄は次のように動きます。

  • 入力されたコードを確認し、特典があれば「このコードで ◯◯」と「このコードを使う」を表示します
  • 紹介リンクを貼り付けると、コードだけを取り出して自動で適用します
  • 別の紹介コードが適用済みなら「このコードに変更する」を表示します
  • 誰の紹介かはユーザーに表示しません。紹介の取り消しは API(GoAlong.removeReferral())で行えます

React Native では <CreatorCodeInput />、Flutter では CreatorCodeInput ウィジェットが同じ動きをします。ベータ版で報酬の対象になるのは iOS(App Store)での購入です。Android(Google Play)は対応予定です。

b. ボタンから開く

@State private var showCode = false

Button("紹介コードを入力") { showCode = true }
    .goAlongCodeSheet(isPresented: $showCode, rcAppUserID: Purchases.shared.appUserID)

iOS 16 以降ではハーフモーダルで表示されます。

c. デザインを自作する

状態を管理する CreatorCodeModel に、独自の画面を組み合わせます。

@StateObject var model = CreatorCodeModel(rcAppUserID: Purchases.shared.appUserID)

TextField("コード", text: $model.code)
Button("このコードを使う") { Task { await model.apply() } }
// model.phase(.checking / .valid / .applying / .failed / .done)に応じて表示を切り替える

別の紹介コードがすでに適用されている場合は、model.phase が .failed(.conflict(current:)) になります。「別の紹介コードが適用済みです」と伝え、ユーザーが変更を選んだら model.apply(confirmReplace: true) を呼んでください。黙って上書きしないための仕組みです。

見た目と文言

既定はモノクロで、ライト・ダークの両方に対応しています。色・角丸・文言は GoAlongTheme と Labels で変えられます。

var theme = GoAlongTheme()
theme.accent = Color("ReferralAccent")      // Asset Catalog の色(ライト/ダークを定義)
theme.onAccent = Color("ReferralOnAccent")  // accent の上の文字色。必ずペアで指定

var labels = CreatorCodeInputView.Labels()
labels.title = "招待コード"

CreatorCodeInputView(labels: labels, theme: theme, ...) { _ in }

入力欄に紹介リンクをそのまま貼り付けても、コードだけを取り出して適用します。

初回画面の入口(おすすめ)

動画では「設定画面を開いて…」まで伝えられないため、アプリの方から聞くのが効果的です。ReferralEntryView は状況に応じて出し方を変えます。

ReferralEntryView(rcAppUserID: Purchases.shared.appUserID) { creator in
    // 適用が完了したとき
}
状況表示
紹介を適用済み・有効な購読がある何も表示しない
クリップボードに紹介リンクの手がかりがある入力欄を開いた状態で表示
使える紹介コードが 1 つもない(インフルエンサーがまだコードを発行していないなど)何も表示しない
使える紹介コードがあり、手がかりがない小さな入口(既定の文言は「紹介コードを入力する」)

既定の文言は、アプリが表示している言語に合わせて日本語・英語・韓国語・繁体字中国語で表示されます(iOS SDK 0.2.0 以降。それ以外の言語は英語)。文言は Labels で差し替えられます。

使える紹介コードがあるかは GoAlong のサーバーが判定します。募集を停止していても、参加中のインフルエンサーのコードが有効なら入口は表示されます。

有効な購読があるユーザーは対象外

いま有効な購読を持っているユーザーには、紹介コードを適用できません。紹介は新しいユーザーを連れてきた対価であるためです(解約して購読が切れたユーザーは対象になります)。Swift 版は SDK が端末の StoreKit で判定するため、アプリ側の実装は不要です。React Native・Flutter 版は、configure の isActiveSubscriber で判定します(SDK の導入)。対象外のユーザーには「すでにご利用中のため、紹介コードはご利用いただけません」と表示されます。