もはや3年も前の話ですが、iOS 7からSKPaymentTransactionオブジェクトからレシートを取得することがdeprecatedになりました(Swiftではそもそも取得できない)。
代わりに、以下のコードでアプリケーションレシートを取得すれば、購入時のレシート情報を確認することが出来ます。
NSData(contentsOfURL: NSBundle.mainBundle().appStoreReceiptURL!);
最近になってようやくiOS 7型のレシートの挙動について調べたので、
iOS 7型のアプリケーションレシートの処理を実際に動かしてみて分かったことを備忘録的にまとめました。
- Apple IDでログインしていても、アプリインストール時点ではアプリケーションレシートはnil
- リストア/課金を行うことでアプリケーションレシートにアプリ内課金レシート情報が書き込まれる
- Apple IDをサインアウトしたり別のApple IDでサインインしても、アプリケーションレシートにアプリ内課金レシート情報は残る
- ただし、後者のApple IDで購読したりリストアして過去のトランザクションを復元した場合、後者のApple IDの課金レシートのみになる
- アプリをアンインストールするとアプリケーションレシートは消える(その際、paymentTransactionのレシート情報も消える)
- アプリケーションレシート内の
in_app
にはアプリケーションで処理したpaymentTransactionのレシートが含まれる - アプリケーションレシート内の
latest_receipt_info
には全てのpaymentTransactionのレシートが含まれる
以上。