Ios 应用内购买下载永远不会被下载

Ios 应用内购买下载永远不会被下载,ios,objective-c,in-app-purchase,storekit,Ios,Objective C,In App Purchase,Storekit,我有一个问题,我有一个应用程序内购买,我想用我的沙盒测试。 应用内购买的状态为“准备提交”,我已按照步骤将pkg文件上载到应用内购买 沙箱中的事务可以正常工作,但是当涉及到下载时 -(void)paymentQueue:(SKPaymentQueue*)队列更新下载:(NSArray*)下载 委托函数只被调用一次。它首先进入“else if(download.downloadState==SKDownloadStateActive)”块,并打印“Progress…0…” 在下载生效之前,应用内购

我有一个问题,我有一个应用程序内购买,我想用我的沙盒测试。 应用内购买的状态为“准备提交”,我已按照步骤将pkg文件上载到应用内购买

沙箱中的事务可以正常工作,但是当涉及到下载时 -(void)paymentQueue:(SKPaymentQueue*)队列更新下载:(NSArray*)下载 委托函数只被调用一次。它首先进入“else if(download.downloadState==SKDownloadStateActive)”块,并打印“Progress…0…”

在下载生效之前,应用内购买是否必须经过苹果的“审查和批准”? 否则会有什么错误

谢谢

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


- (void)paymentQueue:(SKPaymentQueue *)queue updatedDownloads:(NSArray *)downloads;
{
    for (SKDownload *download in downloads) {

        if (download.downloadState == SKDownloadStateFinished) {
            [self processDownload:download]; // not written yet
            // now we're done
            [queue finishTransaction:download.transaction];

        } else if (download.downloadState == SKDownloadStateActive) {

            NSString *productID = download.contentIdentifier; // in app purchase identifier
            NSTimeInterval remaining = download.timeRemaining; // secs
            float progress = download.progress; // 0.0 -> 1.0
            NSLog(@"Downloading %@", productID);
            NSLog(@"progress... %f time remaining %f", progress, remaining);
            // NOT SHOWN: use the productID to notify your model of download progress...

        } else {    // waiting, paused, failed, cancelled
            NSLog(@"Warn: not handled: %d", download.downloadState);
        }
    }
}

updatedTransaction

[self completeTransaction:transaction];
并将其插入

if (download.downloadState == SKDownloadStateFinished) {
        // now we're done
        [self completeTransaction:download.transaction];
}

这样,下载进度将调用
updatedownloads

用于测试的应用内购买无需获得苹果的批准。我也在经历同样的事情。你找到问题所在了吗?我找到了paymentQueue:updatedDownloads在我的程序中只被调用一次的原因。在函数completeTransaction中,在我运行[[SKPaymentQueue defaultQueue]startDownloads:transaction.downloads]之后调用[[SKPaymentQueue defaultQueue]finishTransaction:transaction]仅当没有transaction.downloads时才应调用finishTransaction。