2

我正在一个允许下载大量数据的 iphone 应用程序中实现应用内购买。

现在,我正试图弄清楚 Store Kit 是否可以告诉我是否有任何交易完成购买,但已被应用程序关闭中断。

据我所知,唯一的方法是将观察者添加到 SKPaymentQueue:

[[SKPaymentQueue defaultQueue] addTransactionObserver:someObject];

并等待 defaultQueue 调用

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

在某个对象上。当此方法为 SKPaymentTransactionStatePurchased

我第一次尝试解决这个问题是添加我的观察者,然后要求:

[SKPaymentQueue defaultQueue].transactions

并检查那些。据称这会返回一系列“待处理”交易,但根据我的经验,不包括 SKPaymentTransactionStatePurchased 中的交易。

我希望使用 storekit 来保持这种状态,并且会喜欢任何想法。谢谢你。

4

1 回答 1

0

我认为单独使用 store kit 是不可能做到这一点的,所以我在 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 回答