見出し画像

iOSアプリ開発におけるサブスクリプション実装(サンプルコード付き)


はじめに

iOSアプリで課金処理やサブスクリプションの実装が必要になった際に、Apple社が提供するAppStoreやStoreKitの枠組みを活用することで、課金処理に関する設計、開発、運用保守のコストを大幅に削減でき、かつAppIDによる請求代行の恩恵を受けることができます。これは開発者・利用者双方にとって大きなメリットです。

しかし、この既存の枠組みを使って開発を始めてみると、日本語のドキュメントやサンプルコードが少ない上に、全体感が把握できる資料が乏しく、想定以上の学習コストが掛かりました。

そこで、自身の備忘録として、また今後サブスクリプションを導入しようとしている開発者がStoreKitの全体感を理解し、サブスクリプション製品の表示から購入、状態管理までの最低限必要な実装を追えるようなチュートリアル記事を執筆しようと思いました。

最後に宣伝ですが、本稿執筆のキッカケとなったStoreKitとWWDC23でリリースされたObject Capture for iOSの機能を使って、3Dスキャンデータをグループ内で共有可能なアプリをリリースしましたので、興味のある方は使ってみてください。



サブスクリプションの全体像

以下に、これから作成するサブスクリプションの全体像を示します。解釈に基づく概念図であるため、一部正確でない箇所があるかもしれませんが、その点はご容赦ください。サブスクリプションを構成する要素には、以下の4つのアイテムがあり、これらのアイテムを作成することで、サブスクリプションを実装することができます。

  • SubscriptionGroup

  • Subscription

  • Product

  • Transaction

図1:サブスクリプションの全体像

このうち、SubscriptionGroupとSubscriptionはApp Store Connectのコンソール画面から登録を行います。残りのProductとTransactionについてはStoreKitの構造体であり、Swiftを使ってiOSアプリ上で実装します。したがって、作業としてはApp Store Connectの設定iOSアプリの実装のパートに分かれます。

記事の構成としては、それぞれの作業パートについて順に説明を行い、最後にSandbox環境を使って、一連の動作をテストする方法を説明したいと思います。


App Store Connectの設定

App Store Connect上でサブスクリプショングループとサブスクリプションの登録します。いずれもサブスクを適用するアプリの属性情報として登録を行います。
App Store Connectに対象のアプリ登録が済んでいる前提でその先の手順を説明します。

サブスクリプショングループの作成

サブスクリプションを登録するためには、母体となるサブスクリプショングループを先に作る必要があります。対象のアプリの頁にアクセスし、サイドメニューから収益化の下にあるサブスクリプションを選択し、サブスクリプショングループのセクションから作成を行います。
作成時には参照名の入力が求められます。参照名はAppleConnectメニュー上で表示される名称であり、日本語の使用が可能です。

図2:サブスクリプショングループの作成

作成したサブスクリプショングループをクリックすると、サブスクリプショングループの詳細画面に遷移します。ここからサブスクリプションとAppStoreのローカリゼーションが登録できます。

図3:サブスクリプショングループの詳細

App Storeのローカリゼーションの登録

表示言語とサブスクリプショングループ名、アプリ名表示オプションを設定します。サブスクリプショングループ名は特にこだわりがなければサブスクリプショングループの参照名と同じで良いと思います。

アプリ名表示オプションではサブスクリプショングループ表示の際にアプリ名とは異なるカスタム名を使用することができる、というものですが、こちらも特段理由がなければ、デフォルトのアプリ名を利用のままで良いと思います。

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

サブスクリプショングループに対して、個々のサブスクリプションを登録していきます。サブスクリプションのセクションから+ボタンを押して、参照名製品IDを登録します。参照名はAppleConnect上の表示名、製品IDはシステム上の識別IDとなります。製品IDには英数字、ピリオド、下線のみが利用できます。

参照名のほか、サブスクリプション期間価格サブスクリプションを配信する国や地域AppStoreで表示されるアプリの説明文などが設定できます。
なお、ここで入力した情報はSwiftでサブスクリプション情報に関するUIを作る際に引用することができます(後述)。

これらの項目について、ヘルプを見ながら適宜入力を行なってください。全ての入力が完了するとサブスクリプションのステータスが送信準備完了になります。

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

サブスクリプションの削除

登録したサブスクリプションを何らかの理由で削除したいことがあるかと思いますが、サブスクリプションを削除する導線がわかりずらかったので、削除手順についても掲載します。

サブスクリプションを削除するためには、事前にAppStoreからの配信を削除する必要があります。配信可否セクションのところで配信から削除を選んで一旦サブスクリプションを保存します。
そのあと、もう一度サブスクリプションを開くと、ステータスがデベロッパによりストアから削除済みとなり審査に関する情報の下にこのサブスクリプションを削除のリンクが表示されます。ここからサブスクリプションを削除できます。

なお一度登録した製品IDはサブスクリプションを削除しても再利用できないので注意しましょう。

図5:サブスクリプションの削除

アプリ内課金とサブスクリプションの設定

サブスクリプションの入力が完了したら、アプリとサブスクリプションを紐づける必要があります(アプリのメニューの中でサブスクリプションを登録しているので、アプリに紐づいてそうにも思えますが、もう一手間必要です)。サブスクリプションからアプリの階層に戻って、サイドメニューのiOSアプリの下にある、1.0(任意のバージョン名) 提出準備中をクリックして、下の方にあるアプリ内課金とサブスクリプションのセクションから選択を行います。
紐付けたいサブスクリプションが複数ある場合には、その全てにチェックを入れて登録します。

図6:アプリ内課金とサブスクリプション

ここまででApp Store Connectでの作業は完了です。続いてアプリ側での作業について説明します。

iOSアプリの実装


ここから先は

7,943字 / 8画像

¥ 100

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?