沙盒环境中的应用内购买恢复问题

时间:2014-02-26 10:09:07

标签: ios testing in-app-purchase restore storekit

我正在使用iOS中的应用内购买,我购买时使用的是非耗材类型。我已经购买了这些东西,现在正在测试恢复过程。 当我要恢复它时问我苹果用户ID和密码,然后它显示我弹出文本

  

“您已购买此产品但未下载。[环境:沙箱]”

如果我点击“确定”,则不会发生任何事情。

我坚持这个,找不到方法。有人可以帮我吗??

这是我使用的委托方法。

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

for (SKPaymentTransaction * transaction in transactions){

    switch(transaction.transactionState)
    {
        case SKPaymentTransactionStatePurchasing:
        {
            NSLog(@"purchasing");
            break;
        }//new
        case SKPaymentTransactionStatePurchased:
        {
            NSLog(@"purchased");
            [[SKPaymentQueue defaultQueue]finishTransaction:transaction];

           // unlocking data code

            break;
        }//new
        case SKPaymentTransactionStateRestored:
        {
            NSLog(@"In the restoring state");
            break;

        }//new
        case SKPaymentTransactionStateFailed:
        {
            ////////v//////nnn////////NSLog(@"failed");
            switch (transaction.error.code)
            {
                case SKErrorUnknown:
                    NSLog(@"SKErrorUnknown");
                    break;
                case SKErrorClientInvalid:
                    NSLog(@"SKErrorClientInvalid");
                    break;
                case SKErrorPaymentCancelled:
                    NSLog(@"cancelled");
                    break;
                case SKErrorPaymentInvalid:
                    NSLog(@"SKErrorPaymentInvalid");
                    break;
                case SKErrorPaymentNotAllowed:
                    NSLog(@"SKErrorPaymentNotAllowed");
                    break;
                default:
                    NSLog(@"No Match Found for error");
                    break;
            }
            [[SKPaymentQueue defaultQueue]finishTransaction:transaction];
            [[SKPaymentQueue defaultQueue]removeTransactionObserver:self];
            break;
        }
    }
}

}

2 个答案:

答案 0 :(得分:0)

在iTunesConnect中添加IAP时,您选择是否使用Apple托管它(请查看下面的SS),发布的警告似乎表明您选择使用Apple托管内容,但我认为您没有托管任何内容在Apple服务器上,如果是这种情况,请确保选择“否”选项,如下面的SS。

希望它有所帮助。

IAP hosting

答案 1 :(得分:0)

你有没有:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];