◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-04-07上級

RevenueCat 上級ガイド — Win-Backキャンペーン・オファーコード・解約防止フローで LTV を最大化する

RevenueCat の高度な機能を活用して解約を防止し、離脱ユーザーを呼び戻す方法を解説。オファーコード・Win-Backキャンペーン・グレースピリオド・解約フローのUX設計まで網羅した実践ガイドです。

RevenueCat30Rork Max236サブスクリプション66チャーン対策3オファーコードWin-BackLTV最大化

✦ プレミアム記事

解約通知を最初に受け取ったときのことを、今でも覚えています。個人でアプリを運用していると、ダウンロード数のグラフばかりを追ってしまいがちですが、本当に収益を左右するのは「一度離れた人が戻ってくるかどうか」でした。

サブスクリプションアプリでは、獲得コスト(CAC)を下げる努力と同じ重み——いえ、それ以上の重みで、既存ユーザーをつなぎとめる設計が効いてきます。月間解約率(Churn Rate)がわずか1%改善するだけで、LTV(顧客生涯価値)は数十%単位で伸びることも珍しくありません。守りの一手が、そのまま次の攻めの余力になります。

以下では、RevenueCat の解約防止機能を、Rork Max で作ったアプリに実装する手順を追っていきます。私自身が個人開発で試してきた順序——設定だけで効く即効性の高い施策から、データを積み上げて効果を測る中長期の設計まで——を、実際に手を動かす流れで並べました。

RevenueCat の解約防止エコシステムを理解する

まず、RevenueCat が解約対策に提供するツールを整理しておきましょう。

Offerings(オファリング)と Packages(パッケージ) サブスクリプションの種類(月額・年額・生涯)を管理する単位です。Win-Back Offers もここで定義します。

Promotional Offers(プロモーショナルオファー) Apple StoreKit 2 / Google Play Billing に対応した割引オファーです。既存・元契約者向けの特別価格を提示できます。

Offer Codes(オファーコード) SNSキャンペーン・メルマガ・インフルエンサー経由で配布する無料/割引コード。一定期間のトライアルや割引サブスクリプションを提供できます。

Grace Period(グレースピリオド) 決済失敗時に一定期間(iOS: 最大16日、Android: 最大30日)サービス継続を許可する機能。Involuntary Churn(意図しない解約)を削減します。

Webhooks & Event Streams 「試用期間終了」「更新失敗」「解約」などのライフサイクルイベントをバックエンドで受信し、適切なフォローアップアクションを自動化できます。

オファーコードの実装

App Store Connect でオファーコードを作成する

App Store Connect の「App内課金」>「サブスクリプション」から、対象サブスクリプションを選択し、「オファーコード」タブで作成します。

  • オファータイプ: 無料期間、割引、固定価格(Pay Up Front)の3種類
  • コード数: 最大1,000コード/オファー(バッチ生成可能)
  • 期間制限: 終了日を設定して期間限定キャンペーンに活用

Rork Max でコード入力UIを実装する

import Purchases, { PurchasesStoreProduct } from 'react-native-purchases';
 
// オファーコード入力画面
export const RedeemOfferCodeScreen = () => {
  const [code, setCode] = useState('');
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState<string | null>(null);
 
  const handleRedeem = async () => {
    setIsLoading(true);
    setError(null);
 
    try {
      // iOS: presentCodeRedemptionSheet() で Apple 標準UIを表示
      await Purchases.presentCodeRedemptionSheet();
 
      // コード適用後に購読ステータスを更新
      const customerInfo = await Purchases.getCustomerInfo();
      const isPremium = customerInfo.entitlements.active['premium'] !== undefined;
 
      if (isPremium) {
        // 成功 → プレミアム機能アンロック
        navigation.replace('PremiumHome');
      }
    } catch (e: any) {
      setError('コードの適用中にエラーが発生しました。もう一度お試しください。');
    } finally {
      setIsLoading(false);
    }
  };
 
  // Android: カスタムコード入力UIを実装
  const handleRedeemAndroid = async () => {
    setIsLoading(true);
    try {
      // Google Play のコード適用API
      const offerings = await Purchases.getOfferings();
      // Android は Google Play の標準フローでコードを適用
    } catch (e) {
      setError('Android コードの適用に失敗しました。');
    } finally {
      setIsLoading(false);
    }
  };
 
  return (
    <View style={styles.container}>
      <Text style={styles.title}>特別オファーコードを入力</Text>
      <Text style={styles.description}>
        メルマガやSNSで受け取ったコードを入力して、特別割引を適用してください。
      </Text>
      <TouchableOpacity
        style={[styles.redeemButton, isLoading && styles.disabled]}
        onPress={Platform.OS === 'ios' ? handleRedeem : handleRedeemAndroid}
        disabled={isLoading}
      >
        {isLoading ? (
          <ActivityIndicator color="#fff" />
        ) : (
          <Text style={styles.buttonText}>コードを適用する</Text>
        )}
      </TouchableOpacity>
      {error && <Text style={styles.errorText}>{error}</Text>}
    </View>
  );
};
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦RevenueCat の Win-Back を15%ホールドアウトで測る設計と実装コード
✦意図しない解約 対 意図的な解約 — アプリの状況別・施策の優先順位マップ
✦Grace Period・Cancellation Survey・Win-Back を段階導入する実務手順
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ ビジネス2026-05-05
Rork Max × RevenueCat Paywalls SDK で変わるペイウォール開発 — A/B テスト・リモート更新・コンバージョン改善の実装ガイド
RevenueCat Paywalls SDK を Rork Max アプリに統合し、審査なしでペイウォールをリモート更新・A/B テストする実装ガイド。コンバージョン率を改善するデザイン原則と実践コードをまとめます。
⟐ ビジネス2026-04-14
Rork Maxで個人開発アプリ月収100万円を達成する:収益設計・実装・データ分析の設計書
Rork Maxで月収100万円を目指す収益設計をまとめます。勝てるジャンルを選ぶ5つの判断基準、3層構造の収益モデル、RevenueCatで実装する課金フロー、広告費ゼロからのユーザー獲得、KPIの読み方と改善サイクル、よくある失敗の回避策までを体系的に扱います。
⬡ 開発ツール2026-07-18
文字サイズ最大とドイツ語で、生成された画面は静かに詰まる — Rork Max の SwiftUI にレイアウト耐性の検証を通した記録
Rork Max が生成した SwiftUI 画面を疑似ローカライズと最大文字サイズに通し、どこから詰まるかを機械的に洗い出した記録です。ViewThatFits・ScaledMetric・layoutPriority の使いどころと、再生成のたびに回帰を捕まえるスナップショット検証を、実際の数値とともにまとめました。