mcpField
R
rc-price-changes

rc-price-changes

github.com/revenuecat開発76638 回インストール1 日前に更新
リポジトリ

rc-price-changes について

既存商品の価格を変更する Android サブスクリプション開発者向けの RevenueCat スキルです。Google Play の同意フローと RevenueCat による購読者情報の更新を説明し、任意の通知方法も扱います。

主な機能

  1. 01オプトアウトとオプトインの価格変更の区別
  2. 02RevenueCat による RTDN 処理の説明
  3. 03CustomerInfo による同意結果の確認
  4. 04Webhook による解約処理

活用シーン

  1. 01Android サブスクリプションの価格変更計画
  2. 02大幅値上げ後の同意状況の確認
  3. 03値上げ拒否後の解約をサーバーで処理
  4. 04対象購読者への任意通知

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/revenuecat/ai-toolkit --skill rc-price-changes

インストール後、Claude Code で/rc-price-changesを入力して読み込まれたか確認します。

詳細

価格変更

既存のサブスクリプション商品の新価格を Android で導入し、対象ユーザー群や同意に関する処理を RevenueCat に任せたい場合は、このスキルを使用してください。

フェーズ 1:理解する

Google Play では、有効なサブスクリプションに対して次の 2 種類の価格変更がサポートされています。

  • オプトアウト方式の変更(通常は値下げ、および Google のオプトアウト基準内の値上げ)。次回の更新時に新価格が自動的に適用されます。ユーザーによる操作は必要ありません。
  • オプトイン方式の変更(基準を超える値上げ)。Google が独自のアプリ内同意ダイアログを表示します。ユーザーが同意すると、新価格での利用が継続されます。同意しない場合、サブスクリプションは期間終了時に解約されます。

RevenueCat はバックエンドで SUBSCRIPTION_PRICE_CHANGE_UPDATED や関連する RTDN を処理し、対象ユーザー群や同意状態が変わると CustomerInfo を更新します。アプリでは、これまでと同じ方法でエンタイトルメントを読み取ります。

ほとんどの価格変更シナリオでは、アプリやバックエンドで実装することはありません。

フェーズ 2:計画する

作業を始める前に、該当する方式を判断してください。

質問オプトアウトオプトイン
一般的な適用条件値下げ、または Google の基準内の小幅な値上げGoogle の基準を超える大幅な値上げ
ユーザーの同意不要必要。Google Play の UI で求められます
ユーザーが同意しない場合該当なしサブスクリプションは期間終了時に解約され、CANCELLATION Webhook が発火します
新価格の適用時期次回の更新時に自動適用ユーザーが Play のダイアログで同意した後
RevenueCat が処理する RTDNSUBSCRIPTION_PRICE_CHANGE_UPDATEDSUBSCRIPTION_PRICE_CHANGE_UPDATED。同意しない場合は続いて SUBSCRIPTION_CANCELED
アプリのコード変更不要不要
ペイウォールの価格ソースpkg.product.price.formatted(新規購入のみ)pkg.product.price.formatted(新規購入のみ)

実行前に、次の点を確認してください。

  • 変更は値下げ、小幅な値上げ、大幅な値上げのどれですか?これによってオプトアウト方式かオプトイン方式かが決まります。
  • 変更が適用される前に、既存のサブスクライバーへアプリ内で通知しますか?これは任意です。Webhook や Targeting ルールを使って実施できますが、必須ではありません。
  • 現在、どの旧価格の対象ユーザー群がありますか?既存のサブスクライバーは、Google が移行するまで旧価格を支払い続けます。これは Google Play 側の処理であり、SDK には表示されません。

フェーズ 3:実行する

作業の大半は Play Console と RevenueCat のダッシュボードで行います。アプリは変更不要です。

1. Play Console で価格を更新する

Google Play Console でサブスクリプションを開き、基本プランを選択して価格を編集します。変更幅と地域に基づき、既存のサブスクライバーの扱い(オプトアウト方式かオプトイン方式か)を選ぶよう Google から求められます。

2. RevenueCat に変更を反映させる

RevenueCat は Google からの RTDN を自動的に処理します。価格変更自体について、RevenueCat のダッシュボードで設定を切り替える必要はありません。Google の反映後、RevenueCat のダッシュボードで商品の価格が更新されていることを確認してください。

3. クライアントでオファリングを更新する(任意)

新規購入者向けのペイウォールに新価格をすぐに表示したい場合は、Play Console の変更が反映された後にオファリングを更新してください。SDK の呼び出し方法は変わりません。

val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formatted

旧価格の対象ユーザー群に属するサブスクライバーは、Google が移行するまで旧価格を支払い続けます。pkg.product.price.formatted は、新規購入に対して常に正しい価格を返します。

4. 同意の確定時に CustomerInfo を確認する

オプトイン方式の値上げでは、同意の結果が判明すると RevenueCat が CustomerInfo を更新します。通常と同じ方法でエンタイトルメントを読み取ってください。

val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true

同意ダイアログを作成しないでください。Google Play が表示します。

5. 必要に応じて、Webhook で同意しなかったユーザーを処理する

ユーザーがオプトイン方式の値上げに同意しない場合、サブスクリプションは期間終了時に解約されます。RevenueCat は CANCELLATION Webhook イベントを発火します。サーバー側では、ほかの解約と同じ方法で処理してください。

6. オプション:影響を受けるユーザーに通知する

Google のダイアログが表示される前に、料金の値上げ予定をサブスクライバーに知らせたい場合は、RevenueCat の Webhook イベントを使ってアプリ内バナーを表示するか、ターゲティングルールを使って影響を受けるグループに特定の Offering を表示します。これは機能強化であり、料金変更の契約の一部ではありません。

参考資料

コメント