【问题标题】:Problems with iPhone SDK StoreKitiPhone SDK StoreKit 的问题
【发布时间】:2011-05-04 17:42:00
【问题描述】:

在我的 iPhone 应用中,我使用 StoreKit 让用户可以在应用中购买订阅。我遇到的问题是,每次我启动应用程序 SKPaymentTransactionStatePurchased 时都会突然发送给观察者,因此应用程序会一次又一次地尝试购买订阅。如果我尝试从应用程序的订阅列表中再次购买订阅,我会收到一条消息,提示“您已经购买了此应用内购买,但尚未下载。”然后使用 SKErrorPaymentCancelled 调用 failedTransaction。

编辑:我现在在 Apple 开发者论坛中找到了很多关于此的帖子,例如:https://devforums.apple.com/thread/73818 和 /thread/73572,似乎很多开发者都有同样的问题..

这是我正在使用的代码,你能看出它有什么问题吗?

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
        case SKPaymentTransactionStatePurchased:
            [self completeTransaction:transaction];
            break;
        case SKPaymentTransactionStateFailed:
            [self failedTransaction:transaction];
            break;
        case SKPaymentTransactionStateRestored:
            [self restoreTransaction:transaction];
            default:
            break;
        }
    }
}

-(void) failedTransaction: (SKPaymentTransaction *)transaction
{
    if (transaction.error.code != SKErrorPaymentCancelled)
    {
        NSLog(@"Error"); 
    } else {
        NSLog(@"Cancel");
    }
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}

-(void) restoreTransaction: (SKPaymentTransaction *)transaction
{
    [self subscribe:transaction];
}

-(void) completeTransaction: (SKPaymentTransaction *)transaction
{
    [self subscribe:transaction];
}

-(void)subscribe: (SKPaymentTransaction*)transaction { 
    NSInteger errorCode = //Connects to my server that verifies receipt with Apple server etc..
    if (errorCode==0) {
        [self provideContent];
    }
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}

【问题讨论】:

    标签: iphone in-app-purchase storekit


    【解决方案1】:

    我第一次使用 StoreKit 时遇到了确切的问题,它发生的原因是在我实现代码时,我没有完成交易。

    因此,当您启动应用程序时,您需要遍历队列并完成所有事务。你不应该这样做,因为你涵盖了所有结果(根据上面的代码,你做了)。

    【讨论】:

    • 感谢您的回答!在我问了这个问题之后,我在 Apple Developer Forums 中找到了几个主题,很多人都有同样的问题。我们已经使用 StoreKit 将近一年了,一定是发生了一些变化……
    【解决方案2】:

    在与 Apple 支持人员交谈后,我能够解决此问题。这似乎是苹果公司的一个问题,现在已经解决了。

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 2011-08-20
      • 2011-09-19
      相关资源
      最近更新 更多