アプリ内購入を有効にしてこのアプリに取り組んでいます。幸せな道はすべて覆われています、すべてがうまくいっています、私は不幸な道を見つけようとしています。
簡単に言うと、購入はサーバー側のコンポーネントにバインドされます。購入時に、トランザクションが「購入済み」状態の場合、サーバーにアクセスすることになっています。これにより、ユーザーのアカウントが有効になります。リクエストが戻ってきたら、いくつかのものをクリーンアップし、最終的にSKPaymentQueueで-finishTransaction:を呼び出します。
不幸なパスは、サーバー呼び出しが何らかの理由で失敗した場合にほとんど発生します。ネットワークが利用できません、ネットワークタイムアウト、ユーザーはアプリを購入した直後にアプリを閉じました。サーバーに電話をかける直前に、名前を付けます。
サンドボックスアカウントを使用した5.1シミュレーターでのテストでは、未完了の購入済みトランザクションが次回の起動時にキューに戻り、デリゲートが適切に呼び出されることが示されています。しかし、しばらくすると、たとえば5分後には、ブームが発生し、トランザクションはなくなります。サンドボックスアカウントの全体的な安定性を考慮すると、シミュレーターの実装でそれを呼び出すつもりですが、わかりにくいです。
この問題に対処する適切な方法は何ですか?
ボーナスの質問:アップルが実際に誰かに請求するのはいつですか?-finishTransaction:というアプリの後であるはずですが、これを示す証拠はどこにも見つかりませんでした。
ありがとう、/ kra
更新:物理デバイスでのテスト、ほぼ1時間、トランザクションはまだそこにあります。消えるトランザクションはシミュレーターのもののようです。