これにより、返金がなされた場合のレシート検証のチェックや、StoreKit側で強制的に擬似エラーを発生させてアプリの動作を検証することが容易になった。
XcodeでStoreKitローカルテストを実施する場合の、事前の各種設定及び検証手順は下記サイトを参照するとして、本記事では下記サイトに掲載されていない重要な設定について述べる。
参考記事:
https://zenn.dev/ueshun/articles/f78bd589ba3e63b93448
https://dev.classmethod.jp/articles/xcode12_storekit_test/
アプリでアプリ内課金の購入を実施すると、アプリ動作中のデバイスにレシートが保存されるが、XcodeでStoreKitローカルテストを実施した場合は本番環境用のレシート保存領域には保存されない。
これは、Appleのルート証明書が本番環境用のものを使用していることが原因で、XcodeでStoreKitローカルテストを実施する場合は、ローカルで署名されたルート証明書を使用しなければならない。
1. ローカルテスト用のルート証明書作成手順
(1) Xcodeプロジェクトナビゲータで、StoreKit構成ファイルをクリックする。
(2) メニューで、[Editor]> [Save Public Certificate]を選択する。
(3) プロジェクト内の場所を選択してファイルを保存する。保存するとき、Target Member shipがTargetsで示されるプロジェクトにチェックマークがなされていることを確認すること。チェックマークがONになっていないと、レシートが保存されない。後でチェックマークをONにする場合は、インスペクタを開いて設定する。
2. コード修正
ルート証明書を参照しているコードを下記のように修正する。
#if DEBUG
let certificate = "StoreKitTestCertificate"
#else
let certificate = "AppleIncRootCertificate"
#endif
3. テスト実行
スキームをDEBUGに変更して実行する。
参考記事;
https://developer.apple.com/documentation/xcode/setting-up-storekit-testing-in-xcode
【アプリ内課金の最新記事】