アイデアは、雨でも晴れでも、濡れていても晴れていても、ユーザーはすべての費用を支払う必要があるということです。
アップル より:
ストア キットは、非消耗品、自動更新サブスクリプション、および無料サブスクリプションのトランザクションを復元する組み込み機能を提供します
これらの取引のために、Apple Store Kit には優れた組み込みツールがあります。他のタイプ (特に消耗品) に注目したいと思います。唯一のトランザクション情報は、購入が成功した後に Store Kit が受け取る識別子とレシート データです。私たちのアプリケーションは、サーバー側モデルを使用して製品を配信します。しかし、ユーザーが App Store 経由で購入を行っているときにサーバーがダウンし、レシートをサーバーに送信して検証プロセスを完了することができないなど、購入データが失われるケースは依然として多くあります。
現在の回避策は次のとおりです。
- サーバーは製品 ID のリストを返します
- ユーザーはいずれかを選択します。アプリはその識別子をデバイスに保存します (SQLite または Core Data 経由)。標準的な Apple Store の取引プロセスは、その後すぐに行われます。
- 成功した場合、アプリケーションは受信データをその識別子とともにデバイスに保存し、サーバーに送信します。失敗またはキャンセルがあった場合、識別子はすぐにデバイスから削除されます。
- サーバーの応答が OK の場合、アプリはレシート データを含む識別子をデバイスから削除します。それ以外の場合は、正常な応答が動作するまで定期的にサーバーに要求を送信します。
しかし、このアプローチにはまだリークがあります。たとえば、ユーザーは、トランザクションがサーバーに配信されるのを待たずにデバイスからアプリケーションを削除できます。そのため、ユーザーの購入に関する証拠はまったくありません。
あなたの提案は?