2

非更新サブスクリプション モデルを使用するアプリがあります。アプリ内購入のテスト アカウントを使用すると、うまく機能します。ただし、Apple の本番サーバーでは、何らかの理由でユーザーが私のアプリからアプリ ストアに移動することがあります (更新された請求情報が原因である場合もあれば、セキュリティの質問に回答するためである場合もあります)。これは、支払いがキューに追加され、Apple 独自の支払いフローに追加された後です。ユーザーがアラート ビュー オプションを押してアプリ ストアに移動すると、私のトランザクション オブザーバーは、SKPaymentTransactionStateFailed州。それはいいです。ただし、ユーザーが請求情報を更新するか、セキュリティの質問を確認した後、アプリ内購入を引き続き購入するかどうかを (アプリの外で) 尋ねられます。それが完了すると、それらはアプリ (それ自体が閉じられた) に戻され、トランザクション オブザーバーからは何も返されません。キューは、製品のリストが取得されたときに購入した製品でのみ更新されます。オブザーバーは通知の前に登録します

だから私の質問は:

アプリ外 (アプリ ストア アプリ) で行われた購入を処理するにはどうすればよいですか?

アプリを開く前に購入が行われた (完了していない) 場合、キューはどの時点で更新されますか? 常にオブザーバーを使用する必要があることはわかっていますが、ユーザーがアイテムを購入したことを知らずにアイテムを 2 回購入することは避けたいと考えています。

4

1 に答える 1

0

試行錯誤して、問題を解決したように見えました

トランザクション オブザーバーをSKPaymentQueueすぐに初期化していなかったことが判明しました。application:didFinishLaunchingWithOptions:初期化して、メソッドのトランザクション オブザーバーとして追加する必要があります。トランザクションがいつ入ってくるかについてpaymentQueue:updatedTransactionsは、次にアプリがアクティブになったときに、トランザクション オブザーバーのメソッドが購入済みトランザクションで呼び出されます。App Store に移動したときに、何らかの理由でアプリが閉じられる場合と閉じられない場合があることに注意することが重要です。アプリが閉じてしまうと、次にアプリを開いたときにメソッドが呼び出されます。

于 2012-11-29T17:05:57.913 に答える