Skip to main content

RevenueCat

Overview

RevenueCatはアプリのサブスクリプション管理と課金のバックエンドを提供するプラットフォーム。
iOS、Android、Webアプリ向けに、アプリ内課金(IAP)や定期購読の処理を簡単にするためのツールを提供しています。

アプリ内課金の仕組み

アプリ内課金ではレシートという用語が出てくる。
これはアプリ内課金を行なったときに App/Play Store が発行してくれるデータで、購入した内容や日時、サブスクリプションの場合は期限が切れる日時などが入っており、アプリ側で取得できる。
通常は、base64エンコードした文字列にしてサーバーとやり取りする。

tip

このレシートが改ざんされていないかどうかは Apple/Google に問い合わせるしかなく、問い合わせにはSecretKey的なものを使用するのでセキュリティの観点から通常はバックエンドで行う。

上記を踏まえた上で、アプリ内課金を実装する場合の一般的な処理の流れは以下のようになる。

  1. アプリ側で決済処理を行う
  2. アプリ側で取得できるレシートをバックエンドに送る
  3. バックエンドで受け取ったレシートをApple/Googleに問い合わせてレシートを検証する
  4. レシートが正しい場合はレシート情報を元に、サブスク加入状態にする
info

RevenueCatは、上述のバックエンドを提供してくれるためサーバーのコード無しでクロスプラットフォームのアプリ内課金を管理できる。
さらに、アプリ側の複雑な決済処理やRevenueCatバックエンドとのやりとりは、公式が提供しているSDKを使えばまるっと行なってくれます。

RevenueCatの主な機能

  1. サブスクリプション管理(以下のプラットフォームの課金を統合的に管理) Apple App Store(iOS)
    Google Play(Android)
    Stripe(Web)
  2. バックエンドの構築不要
    独自のサーバーを用意することなく、アプリ内課金の実装が可能。
    REST APIやSDK(iOS, Android, Flutter, React Native, Unityなど)が提供されている。
  3. 分析とレポート
    ユーザーの課金状況(アクティブサブスクライバー、解約率、MRRなど)をダッシュボードで可視化。
  4. クロスプラットフォームのサポート
    例えばiOSで購入したサブスクリプションをAndroidでも利用できるようにするなど、プラットフォームをまたいだサブスクの管理ができる。
  5. リモートで価格やオファーを管理 アプリを更新せずにプランや価格設定の変更が可能。
  6. Webhook・API連携 StripeやMixpanel、Firebaseなどの他の分析・マーケティングツールとも統合可能。

RevenueCatを使うメリット

  • アプリ開発者は課金まわりの実装を最小限にできる
  • ストアの課金仕様変更に自分で対応しなくて済む
  • 解約分析やリテンション改善に役立つデータが取れる
  • WebでもIAPと統一管理ができる

検討する場合

  • サブスクリプション型のアプリを作っている開発者
  • 課金システムを簡単に導入したいモバイルアプリ開発者
  • 解約率の分析や改善をしたいプロダクトオーナー

競合サービス

  • Google Play Billing & Apple StoreKit(直接実装する方法)
  • Superwall(ノーコードのペイウォール)
  • Adapty(RevenueCatの競合で、UIのカスタマイズが柔軟)

RevenueCatの概念

RevenueCatは、アプリ内課金やサブスクリプション管理を簡単にするための強力なツール。
FlutterでRevenueCatを使ってサブスクリプションを実装する際、特に難しいのが以下の4つの概念。

  • Products (商品)
  • Packages (パッケージ)
  • Entitlements (エンタイトルメント)
  • Offerings (オファリング)

Product

Productは実際にユーザーが購入するアイテム。
例:1ヶ月間のプレミアム会員権や広告を消すための1回限りの購入アイテムが該当する。

Package

Packageは同じ内容の商品を異なるプラットフォームや異なる価格プランで提供する場合に使う。
例えば、App StoreやGoogle Playで同じ商品を提供する際、価格や期間が異なる場合。これらをまとめて1つのエンタイトルメントに紐づけることができる。

  • Monthly Premium (App Store): iOS向けの1ヶ月プレミアム
  • Monthly Premium (Google Play): Android向けの1ヶ月プレミアム

Entitlements(権利)

Entitlementは、サブスクリプションを購入したユーザーが得られる権利や機能のこと。
ユーザーが特定のサブスクリプションを購入した後に、アプリ内で何ができるかを制御する。

  • Premium Access
    • プレミアムユーザー向けに特別なコンテンツや機能にアクセスできる権利
  • Ads Free Experience
    • 広告なしでアプリを利用できる権利

Offerings(「提供」「申し出」「募集)

Offeringは、異なる時期に異なる商品を提供する際に使います。例えば、通常時は通常価格で商品を販売し、キャンペーン期間中には割引価格で提供する場合、これをOfferingで管理する。

  • Regular Offering
    • 通常価格のプレミアムサブスクリプション
  • Campaign Offering
    • 期間限定の割引サブスクリプション

RevenueCatレシート検証

Resource