iOS編【Flutter×Revenuecat】サブスクリプションを構築する

2023/04/28に公開

私が先日リリースした筋トレ習慣化アプリ(Fitness Slave)で、アプリ内課金によるサブスクリプション機能を実装しました。

◆iOS
https://apps.apple.com/jp/app/fitness-slave/id1664027797

◆Android
https://play.google.com/store/apps/details?id=net.japanblog.fitness.slave

  1. iOSの各種設定
  2. Androidの各種設定
  3. Revenuecatでの設定
  4. Flutterアプリ内でのコード実装

それぞれの記事はこちら

https://zenn.dev/yamamotosaishu/articles/8d80174051e4ac

https://zenn.dev/yamamotosaishu/articles/b19319e83fe6fb

https://zenn.dev/yamamotosaishu/articles/14217db39bc4fd

今回は「1.iOSの各種設定」編です。

サブスクリプション機能構築の概要

まずRevenuecatに関してですが、$10,000 までの決済であれば無料で使えます。
https://www.revenuecat.com/pricing/
スモールビジネスであればこれで全く問題ないので、とても良心的な料金体系です。
そして、Revenuecatが何をしてくれるかというと、アプリと各ストアの間に入り、面倒な決済まわりの処理を良しなに実行してくれるという優れもののサービスとなります。

アプリ ⇄ Revenuecat ⇄ ストア(App Store, Google play など)

上記の流れで言及した1〜4のうち、4の実装については、そんなにコードを書く必要はないですが、設定関係が結構やることが多くてややこしいので、一つ一つ進めていこうと思います。

iOSの各種設定

iOSの設定では、以下を行います。

  1. App Store Connectでのサブスクリプションアイテムの登録
  2. Revenuecatで使うシークレットキー、In-App Purchase Keyの発行
  3. アプリ内課金のテスト用Sandboxアカウントの作成

App Store Connectでのサブスクリプションアイテムの登録

アイテムの登録をするためには、Apple Developper programに登録(有料)し、 App store connectでアプリを作成する必要がありますので、それは既に済んでいる前提で進めていきます。

サブスクリプショングループの登録

まず、対象のアプリのコンソールの左側にある「サブスクリプション」に行き、「サブスクリプショングループ」を作成します。

「サブスクリプショングループ参照名」を入力するよう求められますので、お好きな名前を入れます。私の場合はもう作成済で、「Monthly_subscription」にしました。*一回入れると変更不可

サブスクリプションの登録

次に、サブスクリプショングループの中で、さらに「サブスクリプション」を作成します。ここで作成したものが実際のサブスクになります。

サブスクリプションを作成しようとすると、「参照名」「製品ID」を入力するよう求められます。
参照名は後で変えられます(要審査)が、製品IDは変えられない、さらに削除した場合でも再度そのIDは使用できないのでお気をつけください。
Revenuecatの公式的には、製品IDは、<アプリ名><価格><サブスク期間>_<お試し期間><お試し価格>
がいいみたいです。
例えば、RCというアプリで、年間サブスク、一週間無料で $39.99 USDだったら以下のようにするのが推奨とのこと。
rc_3999_1y_1w0

サブスク期間

次に、サブスク期間を選びます。私のコンソールでは既に作成ずみで選べなくなっているので、Recenuecat公式からのスクショです。

サブスク価格

そして、サブスク価格を選びます。

ここでの注意点は、Appleの場合、価格が自由に設定できるのではなく、Appleによる決まった価格のテーブルがあります。
https://developer.apple.com/jp/news/?id=e1b1hcmv
そしてAppleの場合は、価格は税込です。
一方、Androidの場合は、価格は自由に決められて、税抜きです。なので、両プラットフォームで全く同じ価格にするのは難しく、事前に価格設定を決めておく必要があります。

さらに、お試し特典(2週間無料 など)を設定することもできます。


お試し特典の設定は順を追って行けばできると思いますので、割愛します。

ローカライゼーション設定

次に、ローカライゼーションの設定です。

ユーザーがアプリ内課金を購入する画面に表示される情報で、以下を入力、選択します。
-言語
-表示名
-説明

私の場合は、英語ユーザーと日本語ユーザーをターゲットにしているので、2つのローカライゼーション設定をしています。入力後はこんな感じ。

審査に関する情報

審査に関する情報も入れていきます。
-スクショ(購入画面のスクショ)
-審査メモ

私の場合は、こんな感じで審査に通りました。

スクショは画面を実装してから撮ってアップロードしておきましょう。

App Storeのローカリゼーション設定

次に、ひとつ前の画面に戻り、「App Storeのローカリゼーション」を設定します。
ユーザーがiphoneのデバイス設定からサブスクしているサービスを一覧表示で見るときに、表示される情報です。

ここでも、私は英語と日本語で設定しています。

-言語
-サブスクリプショングループ表示名(上で設定した)
-App表示オプション(通常は、APP名をそのまま表示 で問題ないです)

ここまでできたら、一通りサブスクアイテムの登録は完了です。
次に、「App用共有シークレット」の発行をします。

App用共有シークレットの発行

これは、Revenuecat ⇄ AppStore 間での接続で必要になります。

  1. AppStoreConnectの今回のアプリのメニューの「App情報」内の下部、「App用共有シークレット」という項目を見つけます。
  2. 「管理」を押します
  3. 共有シークレットの文字列が生成されます。これは、後でRevenuecatのコンソールに入力します。

In-App Purchase Key の発行

これも、後ほどRevenuecatのコンソールにアップロードするものです。

  1. App Store Connectのトップページ → 「ユーザーとアクセス」 → 「キー」

    私は既に発行済みなので、Revenuecatの公式から上記スクショ拝借してます

  2. キーを発行して、ご自身のPCに保存しておきます。これは、後で使いますので、大切に保存しておいてください。

アプリ内課金のテスト用Sandboxアカウントの作成

iosの場合、アプリ内課金のテストで、実際に課金されないでテストするためには、Sandboxアカウントを用意する必要があります。これもAppStoreConnectで発行できます。

  1. App Store Connectのトップページ → 「ユーザーとアクセス」 → 「ユーザ」

  2. 各必要事項を入力してアカウントを作っておきます。

Discussion