2012-05-16 12 views
9

私は、取引履歴にちょうど2回の購入を持つ1つのテストアカウントを持っています。どちらの製品も非消耗品です。不足しているSKPaymentTransactionsを回復するには?

私はその後、私はその後、私は[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];を使用して以前のトランザクションを復元しようとしたiPadの1のログアウトとiPad 2にログインし、製品B.

を買ったiPadの1にログインし、製品A.

を買いました

コールが戻ってくると、製品Bのみが復元可能なトランザクションのリストに含まれます。さらに

、私はあなたがこれをすでに購入した」と言って、ポップアップを取得

SKPayment *payment = [SKPayment paymentWithProduct:productA]; 
[[SKPaymentQueue defaultQueue] addPayment:payment]; 

使用のiPad 2で再度、製品Aを購入しようとします。 [OK]をタップしてもう一度無料でダウンロードしてください。

既に商品Aを購入していた場合、以前の購入を元に戻そうとすると商品リストに表示されないのはなぜですか?なぜユーザーは再び購入しようとする必要がありますか?

EDIT:
どのiPadを使用しているか(iPad 1またはiPad 2)は問題ではないことが判明しました。復元可能なトランザクションのリストに製品Bのみが表示され、製品Aを購入する必要があります。

EDIT:
元のものと同じバンドルIDと製品IDを使用して、製品リクエスト、復元、購入作業を独自のプロジェクトに外挿しました。

今すぐは復元可能なトランザクションのリストに表示されますが、いずれかの製品を購入しようとすると同じポップアップが表示されます。

壊れたアップルツールでウサギの穴の下をもう一度移動します。

編集:
この調査のインスピレーションは、不足している権利に関するユーザーの苦情です。これは、ユーザーがiPad 2から新しいiPad 3に切り替わったときに大きく問題になり始めました。これは私のすべてのユーザーの間で一貫しているわけではありませんが、それを優先して悪意のある行為をしてアップルの顧客サポートが私に指示してくれましたが、これが私が解決できる問題であるかどうかはわかりません特に、Appleはアプリ内購入の現金登録を主張しているからだ。

+0

これが正常な動作であるかどうかは、私にとっても同じように振る舞います。 – ggfela

+0

これは正常ではありません。ユーザーのトランザクション履歴全体は、いつでも任意のデバイスで利用できるようにする必要があります。 – Hyperbole

+0

iOS 7でこの問題が発生しています。復元ボタンは失敗しますが、ユーザーがもう一度購入しようとすると、アイテムを既に購入しているかどうかを確認するメッセージが表示されます。あなたはこれを最後にどのように解決しましたか? – SAHM

答えて

3

これは、Appleのサーバーソフトウェアのどこかにあるバグであるという権威があります。

+2

私はこの問題を常に見ています、特にtest itunesのアカウントで。問題はまだiOS 7 GMに存在します。 – jjxtra

3

このメッセージ 'これはすでに購入済みです。 [OK]をタップしてもう一度無料でダウンロードしてください。デフォルトのキューに支払いトランザクションを追加してトランザクションを完了しなかったときに通常表示されるので、StoreKitはユーザーがアイテムを購入したものの、アプリケーションによってダウンロードされていないと仮定しているため、ユーザーへのアイテムと取引を終え... I'vは、ユーザー購入したアイテムと私のためにその作業良いを取得する方法を持って...すべての製品IDが含まれていますそれを

- (void) checkPurchasedItems 
{ 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
}//You Call This Function 

//Then this delegate Function Will be fired 
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    purchasedItemIDs = [[NSMutableArray alloc] init]; 

    NSLog(@"received restored transactions: %i", queue.transactions.count); 
    for (SKPaymentTransaction *transaction in queue.transactions) 
    { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
    } 

} 

purchasedItemIDsを試してみてくださいユーザーが購入しました。

+0

はい、私はこれを行います。このコールバックの 'queue'パラメータは、トランザクションオブザーバのコールバックと同じくらい空です。 – Hyperbole

+0

復元する必要があるすべての製品に対して、時折コールバックされることはありません。これはまだiOS 7 GMのバグです。 – jjxtra

関連する問題