【问题标题】:In-app purchase restoring issue with sandbox environment沙盒环境的应用内购买恢复问题
【发布时间】:2014-03-01 13:23:24
【问题描述】:

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

“你已经购买了这个,但还没有下载。[环境:沙盒]”

如果我点击确定,那么什么都不会发生。

我被这个困住了,找不到路。有人可以帮我吗??

这是我使用的委托方法。

-(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;
        }
    }
}

}

【问题讨论】:

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


    【解决方案1】:

    在 iTunesConnect 中添加 IAP 时,您选择是否通过 Apple 托管它(检查下面的 SS),发布的警报似乎表明您选择通过 Apple 托管内容,尽管我假设您没有托管任何内容在 Apple 服务器上,如果您遇到这种情况,请确保按照下面的 SS 选择“NO”选项。

    希望对你有帮助。

    【讨论】:

    • 您好,感谢您的回复。我已经用 iTunesConnect 检查了这个选项,但它已经关闭了。有没有其他方法可以解决这个问题?
    • 如果您尝试购买(而不是恢复)会发生什么?
    • 嗨,当我要购买时,它会显示弹出窗口,上面写着“你已经购买了这个,但还没有下载。[环境:沙盒]”。我正在使用测试环境,这是一个问题吗?现在我又收到了一个说“你已经购买了这个,你想免费恢复它吗?”
    • 响应“你已经购买了这个,你想免费恢复它吗?”是我尝试恢复非消耗品时所期望的,因为这些不能多次购买。一个有点离题的问题——当你失败时,你为什么要这样做:[[SKPaymentQueue defaultQueue]removeTransactionObserver:self]; ?
    • 顺便说一句,你怎么知道在这种情况下 SKErrorDomain 与 NSError 一起使用?
    【解决方案2】:

    你有没有:

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2012-08-04
      • 2021-01-29
      • 1970-01-01
      • 2023-03-10
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      相关资源
      最近更新 更多