はじめに
iOSアプリでアプリ内課金を導入した際に、購入履歴の削除に手こずったので記録しておきます。購入前後のテストをしたい時に、購入履歴が消えなく困っている方は試してみてください。
前提条件
- サーバー: RevenueCat
- 使用言語: Swift
- Xcode: Version 13.3.1
- StoreKit用のスキームで実行(Sandbox)
- アプリ内で購入トランザクションができる状態
結論:サーバーのユーザーと、Xcodeのトランザクションを削除!
以下2点を実施すればシミュレーターから購入履歴が消えます。デバイスでのシミュレーションの場合は、プラスで1手順必要です。
- RevenueCatのSandBoxユーザ履歴から、ユーザを削除
- Xcodeで、シミュレーター起動時にタブからTransactionを削除する
- 実機の場合は、App StoreのSandBoxテスターから購入履歴を削除
さらに、アプリ内のデータ(Realm情報など)が消えていいのであれば、シミュレーターや端末上のアプリをアンインストールするだけでも購入履歴が消えるのでこちらが最も楽です。
RevenueCatから、ユーザを削除する
まずはサーバー側のユーザー情報を削除します。上部タブのSandBoxトグルをオンにすると、ユーザが表示されます。
その後ユーザを選択して、下の方にある「Delete user」をクリックします。
confirmと記入してDeleteを押せば削除完了です。
Xcodeからトランザクションを削除
次にXcodeのSandbox上に記録されているtransactionを削除します。in-App Purchaseを入れたスキームを実行する必要があるので、未実施の方はRevenueCatの公式ドキュメントを参考に実施してください。
こちらのスキームでデバッグ中に、Xcodeのデバッグ用タブを見てください。普段見慣れない矢印マークがあるので、そちらをクリックしtransactionを削除すれば完了です。
実機の場合はTestFlightユーザーの購入履歴を削除
次にApp Store Connectの "ユーザーとアクセス" → "テスター" から、テスター情報を開きます。次に編集をクリックし、購入履歴を削除で対象を選んで削除すれば完了です。
以上で全ての削除手順は完了です。ただし、どれかの削除の反映が遅いことがあり、体感的には2〜3分後に購入状態がリセットされる感じです。 消えない場合は少し待ってみてください。
まとめ
- RevenueCatのSandBoxユーザ履歴から、ユーザを削除
- Xcodeで、シミュレーター起動時にタブからTransactionを削除する
- 実機の場合は追加手順として、App StoreのSandBoxテスターから購入履歴を削除
アプリ内データが消えていい場合は、アプリを削除し再インストールが最も簡単です。
