Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2021年05月05日

XcodeでStoreKitローカルテストを実施する場合の、レシート参照先の切り替え



Xcode12とiOS14以降で、SANDBOXを使用せずにXcodeにStoreKitのローカルテストを実施できるようになった。
これにより、返金がなされた場合のレシート検証のチェックや、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
【アプリ内課金の最新記事】
posted by mobileDeveloper at 10:41 | Comment(0) | アプリ内課金 はてなブックマーク - XcodeでStoreKitローカルテストを実施する場合の、レシート参照先の切り替え | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。