はじめに
最近、無料アプリがアカウントのアップグレードプランを販売して広告を非表示にしたり、制限された機能をアンロックしたり、ゲーム内のダイヤモンドやジェムを売買したりする仕組みをよく見かけます。
このような決済をユーザーにとって便利・迅速・信頼性が高く・安全なものにするために、Apple と Google はそれぞれ管理・監督するアプリ上での商品売買を仲介するシステムを構築しました。一方で、第三者として仲介することで、ユーザーから販売者への資金の流れに一定の手数料が発生します。Apple も Google もこのキャッシュフローを見逃すはずがないですよね 😄
1. ストアで扱える商品の種類
Apple は In-App Purchase API、Google は In-App Billing という名称で、アプリ内商品・サービスの多様な購入システムを提供しています。商品は主に 4 種類あります。
| 種類 | 説明 | 例 |
|---|---|---|
| Consumable(消耗品) | 何度でも購入可能、有効期限なし | ダイヤ・ジェム・プレイ回数の追加など |
| Non-Consumable(非消耗品) | 一度購入すると永久に利用可能 | チャットアプリのスタンプ、ゲームの秘密ステージなど |
| Subscription(サブスクリプション) | 一定期間利用可能で、期限切れ時に自動更新(キャンセルしない限り) | Netflix・Elsa などの動画・学習サービスなど |
| Non-Renewing Subscription(非自動更新サブスクリプション) | Subscription と同じだが、期限切れ時に自動更新されない | 同上(手動更新が必要) |
この 4 種類があれば、アプリに必要な決済方式はほぼカバーできます。では、各 OS ごとの設定を見ていきましょう。
2. iOS のセットアップ
まず App Store Connect にアクセスします。
2-1. 銀行口座の設定
銀行口座情報・税務情報・支払い情報を入力し、Apple の利用規約に同意する必要があります。詳細は こちら を参照してください。
App Store Connect にログイン後、「契約 / 税金 / 口座情報(Agreements, Tax, and Banking)」 を選択します。
⚠️ 注意: 情報の入力が完了し、Apple のレビューが通過した後でないと、ストアから商品リストをアプリに取得することができません。
2-2. XCode で IAP Capability を有効化
XCode のプロジェクト設定から 「In-App Purchase」 の Capability を追加します。
Xcode → [プロジェクト名] → Signing & Capabilities → + Capability → In-App Purchase
3. Android のセットアップ
Google Play の Billing は、Alpha トラックにリリースバージョンをアップロードするまで動作しません。
⚠️ 少なくとも 1 つのリリースを Alpha トラックに公開しておく必要があります。
パーミッションの追加
AndroidManifest.xml に以下の権限を追加します。
<uses-permission android:name="com.android.vending.BILLING" />
4. Flutter のセットアップ
pubspec.yaml の dependencies に以下のプラグインを追加します。
dependencies:
flutter:
sdk: flutter
in_app_purchase: ^3.2.0 # 最新バージョンを確認してください
追加後、以下のコマンドを実行してください。
flutter pub get
まとめ
今回は Flutter で In-App Purchase を実装するための基本的な設定を紹介しました。
- iOS: App Store Connect での銀行口座設定 + XCode での IAP Capability 有効化
- Android:
AndroidManifest.xmlへの権限追加 + Alpha トラックへのリリース - Flutter:
in_app_purchaseプラグインの追加
次のパートでは、実際のコードに踏み込んで商品の取得・購入処理の実装方法を解説します。お楽しみに!