2011-07-28 12 views
1

私はいくつかの非消耗のinAppを持っています。その後、inAppのダウンロードが正しく行われている、(SKPaymentTransactionStatePurchased正しく)(及び終了)との取引がキューに残るしかしfinnaly私は...なぜfinishTransaction:キューからトランザクションを削除していません...

[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 

を呼び出す

支払いが一度に行われます?彼らは取り除かれるべきではありませんか?また、次が呼び出されていない:

- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions 

私もfinishtransaction方法で実装しようとしました:

for (SKPaymentTransaction *aTransaction in [[SKPaymentQueue defaultQueue] transactions]) 
{ 
    [[SKPaymentQueue defaultQueue] finishTransaction:aTransaction]; 
} 

(場合には、私は最後までしようとしていたトランザクションオブジェクトがありませんでした正しいものが、これはまた、取引を削除するために失敗した - 彼らは、彼らが実際に削除され、数回)

答えて

4

を削除している理由も時間のほとんどは、時にはそれが削除んが、行動が矛盾している、私は把握することはできませんあなたの質問から、あなたがやろうとしているようです購入が完了したら何かをwnloadしてください。この場合、ダウンロードが開始される前に、おそらくfinishTransactionを呼び出す必要があります。

+0

これはまさに私の「回避策」でした。それともこれは正しい方法ですか?製品がユーザーに配送された後、ドキュメントにfinishtransactionを呼び出すよう指示しています。それをすぐに呼び出すことは私にとってはより良い方法ですが、 – xfze

+0

製品が購入され、まだダウンロードされていないことを覚えておき、終了トランザクションを呼び出す必要があります。バックグラウンドスレッドでは、まだダウンロードされていない購入済み製品のコンテンツをダウンロードします。理由は、5番目の製品のうち3番目をダウンロードしているときにアプリを閉じることができるからです。ダウンロードを再開することは、金融取引に結びついているので、重要です。 – Mugunth

+0

@Mugunth MSStoreKitを使用していて、フラグが設定されている単純な非消耗品でこの問題が発生しました。 MSStoreKitは、この問題のトランザクションを完了してキューから削除しないようにするための準備をしていますか?私はfailedTransactionsへの呼び出しのまわりでdispatch_asyncを使用する提案を見ましたが、それが行く方法であるかどうかはわかりません。私はこれを処理するためにMSStoreKitが更新されるのを見たいと思う。 – SAHM