やること
Firebase側の準備
Firebase Authenticationで匿名ログインの許可
Firebase Authenticationで匿名ログインを許可する。これはあとで出てくる「レシート情報」をFirebase Databaseで管理させたいため。操作の仕方としては、Authenticationのメニューから[匿名]をクリックし、
[有効にする]のボタンを押して、[保存]を押すだけ。
Firestoreの有効化
レシート情報を確保しておくためにFirestoreを使います。
RevenueCatがサービス内容を変更したりサービス終了したりすることに備えます。
(まぁそれ言うと他のどのサービスが死んでも立ち行かなくなりますが)
FirebaseコンソールからFirestoreを有効化します。
AndroidManifest.xmlの編集、バイナリのアップロード
まずGoogle Play Consoleに定期購入アイテムを作る前段階として、AndroidManifest.xmlに以下の宣言を設定済みのバイナリをアップロードしておかなければなりません。
アップロードは、製品版であげなくて大丈夫です。AlphaリリースでもOKです。とにかくアップロードします。
<manifest> <application> </application> <!-- 定期購入アイテム作成のために、請求権限を追加 --> <uses-permission android:name="com.android.vending.BILLING" /> </manifest>
定期購入アイテムの作成
バイナリのアップロードが完了すると、Googleコンソールで定期購入アイテムを作成することができるようになります。
[定期購入を作成]をクリックします。
FlutterでAndroidとiOSに同じアプリをリリースすることが多いので、
アイテムIDに使う英字は小文字だけにするようにしています。大文字を使うと、Google Paly Console側でアイテムIDを入力できなくなるからです。アイテムIDをiOSと統一しておけば、RevenueCatの設定が半分ですみます。
[説明]や[名前]は、別に合わせる必要はないと思います。適当で。登録が完了したらこんな感じの画面になります。
RevenueCat側の設定
Entitlements/Offerings/Packages/Productsという概念について
RevenueCatには、課金アイテムを管理する概念として、Entitlements, Offerings, Packages, Productsというものがあります。iOSやAndroidにはない概念もあり、ぱっと見理解が難しいですがそれぞれ見ていこうと思います。
Products
Productsは、一番下層の概念です。
App Store Connectで作成するApp内課金アイテム、Google Play Consoleで作成する定期購入アイテムに相当する概念です。それらと1:1で対をなします。Productsについては理解することは容易いと思います。
Packages
Packagesは、Productsのひとつ上の上位層の概念です。
複数の同じ性質のProductsをまとめて一つにして扱うものです。
例えば、iOS用の1ヶ月課金アイテムとAndroid用の1ヶ月課金アイテムを一つの「1ヶ月パッケージ」にまとめる、といった概念で使用します。
Offering
Offeringは、Packagesのひとつ上の上位層の概念です。
複数のPackagesをまとめて一つにして扱うものです。
通常の使い方であれば、Offeringは一つだけ存在していれば運用できます。
例えばアプリを利用するユーザにアプリがいくつかの区分を持たせているようなとき(ブロンズレベル、シルバーレベル、ゴールドレベル、プラチナレベルのような区分があったとして)、
ブロンズレベルのユーザーにはOffer_Bronzeをみせる、シルバーレベルのユーザーにはOffer_Silverを見せる、といった使い方をすることができます。
まぁ、通常そこまで凝ったことを個人アプリ開発ですることはないと思うので、Offeringはアプリに対して1つ存在していればいいと思います。
Entitlements
Entitlementsとは、Productsの集合です。
Entitlementsに属しているどれかのProductsがサブスクリプションとして有効であれば、当該ユーザーはアプリ全体としてサブスクリプションが有効ということになっています。プログラム書くときも、「Entitlementsが有効かどうか」という判定をして、サブスクリプションが有効かどうかの判定を行います。
Entitlements/Offerings/Packages/Productsを作っていく
Productsを作る
RevenueCatから[Configuration]→[Products]を選択します。その後右上の[+ New]をクリックします。
Identifierには、App Store Connect, Google Play Consoleで登録するときに指定したIDと同じものを入力します。
そして、[App Store]か[Play Store]かも選びます。
必要なアイテム数これを繰り返します。
Offer, Packageを作る
[Configuration]→[Offerings]を選択します。その後右上の[+ New]をクリックします。
そして、IdentifierとDescriptionを入力します。ご自分のお好きな命名規約で、入力します。ぶっちゃけなんでもよいと思います。
つぎにPackageを作ります。
先ほど上で作成したOfferをクリックすると、Packageを作る画面になります。その後[Packages]右上の[+ New]をクリックします。
Packageの場合は、IdentifierとDescriptionを入力します。Identifierは、選択肢になっていてサブスクリプションの期間を指定することになっています。
要するに、「1ヶ月期間サブスクリプションのProductsはなんですか?」といってことをまとめる役割を持っているということです。
PackageにProductを割り当てる
今作成したPackageにProductを割り当てます。iOS向けアプリ、Android向けアプリを同時にリリースされる場合、このPackageにiOS向け用のProduct, Android用のProductを割り当てることになります。
Offerに [0 Products]と表示されているリンクがあるのでそれをクリックします。
そうしたら、[No products attached to package]と表示されていると思いますので、Productsの[Attach]をクリックします。
プルダウンが表示されるので、そのPackageに割り当てたいサブスクリプションアイテムを選択します。
最後にEntitlementsを作る
最後にEntitlementsを作成します。
[Configuration]→[Entitlements]を選択します。その後右上の[+ New]をクリックします。
基本的にはEntitlementsはアプリで1個しか作らないので、IdentifierとDescriptionは正直なんでもよいです。
私は、Identifier: kihon_plan, description: 基本プラン などとしています。(他にプランなど作りませんけれども)
このEntitlementsが一つでも構成できればRevenueCat側の設定はひとまず完了です。