小编DDR*_*r62的帖子

restoreCompletedTransactions在沙箱环境中返回不完整的信息

在开发iPhone应用程序时,我在restoreCompletedTransactions方面遇到了一些麻烦.在沙箱环境中工作时,会出现下面列出的所有问题.该应用尚未销售.它是在模拟器5.0和5.1中运行的Xcode 4.3.2开发的.我得到的问题是:

  1. 每次应用程序启动并调用addTransactionObserver时,都会调用updatedTransactions并购买一个事务.在每次回调时,我的代码调用finishTransaction:来完成购买,但每次启动应用程序时都会发生这个问题.确认购买完全相同的商品.
  2. 调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]将不会列出随帐户购买的所有非消耗品.我有2次购买非消耗品,每次只返回1件.如果我尝试购买列表中缺少的项目,我将收到一条消息,表明该项目已被购买.列表中缺少的项目不是我遇到问题1(上面列出的).

此时我完全卡住了.我的应用程序依赖于AppStore来返回非耗材的信息,因为我们没有将这些数据保存在我们自己的服务器中.但我们需要确保AppStoreKit返回包含所有购买项目的列表.不只是一些.

这是我用来测试restoreCompletedTransactions的相关代码:

- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    NSLog(@"updatedTransactions started. -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ");
    NSLog(@"Number of transactions received: %d.", [transactions count]);
    int count = 0;
    for (SKPaymentTransaction *trans in transactions)
{
    NSLog(@"Data for transaction %d: ", ++count);
    NSString *transId = [trans transactionIdentifier];
    switch ([trans transactionState])
    {
        case SKPaymentTransactionStatePurchasing:
            NSLog(@"Purchasing transaction: %@", transId);
            if (transId == nil)
            {
                NSLog(@"    Original transaction Id: %@", [[trans originalTransaction] transactionIdentifier]);
            }

            NSLog(@"     No action taken in update");
            break;
        case SKPaymentTransactionStateFailed: …
Run Code Online (Sandbox Code Playgroud)

iphone in-app-purchase ios5

6
推荐指数
1
解决办法
2161
查看次数

我可以从沙盒 AppStore 中删除非消耗品的购买吗?

是否可以使用沙盒删除 AppStore 中非消耗品的购买?'restoreCompletedTransactions' 的响应在第一个非消耗品的购买发生后是不同的。出于测试目的,删除这些购买是非常有价值的,看看不同的函数在购买发生后如何返回不同的值。或者。 . 是我添加越来越多的非消耗品进行测试的唯一选择,即便如此,'restoreCompletedTransactions' 的行为也不会完美吗?

iphone app-store in-app-purchase

3
推荐指数
1
解决办法
1457
查看次数

标签 统计

in-app-purchase ×2

iphone ×2

app-store ×1

ios5 ×1