回答編集履歴

1 追記

fromageblanc

fromageblanc score 2501

2016/10/27 14:56  投稿

> Appleのドキュメントによれば、消耗型のプロダクトを課金された場合は、課金したユーザーが利用する全ての端末でサービスを提供できるようにする必要があると書いてありました。
いや、これは定期購読型の課金の話でいわゆる「リストア」と呼ばれる処理です。消耗型プロダクトはアカウントでなくデバイス単位での管理となります。
消耗型プロダクトにおいて、購入履歴の管理にローカル保存が必要なのは、アップル側でレシートに履歴を残さないからです(定期型だとレシートにアペンドされていく)。自前管理の際、一番確実なのはUUIDとトランザクション情報を都度DBに書くことでしょうか。ローカルストレージだと再インスールで消えちゃいますし。
消耗型プロダクトにおいて、購入履歴の管理にローカル保存が必要なのは、アップル側でレシートに履歴を残さないからです(定期型だとレシートにアペンドされていく)。自前管理の際、一番確実なのはUUIDとトランザクション情報を都度自サバのDBに書くことでしょうか。ローカルストレージのみだと再インスールで消えちゃいますし。
ちなみにあちらのリジェクト理由ですが言いたいことはおそらくこうです。。
・課金のためにユーザー登録を必須にしてはならない。
→消耗型はアカウント管理する必要がないよね。
・あくまでユーザーの任意でユーザー登録を行い複数端末で利用できるようにする。
→会員登録が必要なら消耗型でなく購読型にしてリストア可能なコンテンツにしてね。
・そのため、ユーザー登録をしなくても課金できる必要がある。
→消耗型は端末単位での購入なのでユーザ登録いらないよね。
・その場合サーバーではなくローカルに課金されたことを保存しておく必要がある。
→アップルでは消耗型の購入履歴はレシートに残らないからトランザクションごとに自分でやってね。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る