2

取るに足らない量のデータのダウンロードを可能にするiphoneアプリケーションでアプリ内購入を実装しています。

現在、購入が完了したが、アプリケーションのシャットダウンによって中断されたトランザクションがあるかどうかをストアキットが教えてくれるかどうかを調べようとしています。

私が知る限り、これを行う唯一の方法は、SKPaymentQueueにオブザーバーを追加することです。

[[SKPaymentQueue defaultQueue] addTransactionObserver:someObject];

defaultQueueが呼び出すのを待ちます

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

someObjectで。上記の中断状態にあるアイテムは、このメソッドが次の場合、トランザクション配列にSKPaymentTransactionStatePurchasedとして表示されます。

この問題を解決するための最初の試みは、オブザーバーを追加してから、次のことを要求することでした。

[SKPaymentQueue defaultQueue].transactions

そしてそれらを検査します。これは「保留中」のトランザクションの配列を返すと言われていますが、私の経験では、SKPaymentTransactionStatePurchasedにあるトランザクションは含まれていません。

私はこの状態を維持するためにストアキットを使用することを望んでいました、そしてどんなアイデアでも好きです。ありがとうございました。

4

1 に答える 1

0

ストアキットだけを使用してこれを行うことは不可能であると判断したため、sqliteで小さなテーブルを作成しました。

create table purchased_products (
  product_identifier text primary key, -- apple store id string
  purchased integer not null           -- 1 if purchased
);

製品が購入されたことを示すSKPaymentQueueコールバックを受け取ったら、このテーブルに行を追加します。

正常に動作しています。

于 2009-11-04T22:21:04.057 に答える