在发布应用程序存储后,App购买恢复无法正常工作

时间:2014-06-21 07:29:07

标签: ios iphone objective-c in-app-purchase storekit

我有一个非常奇怪的问题。我已经为我的非耗材应用程序实现了In App Purchase机制。它工作得很好,并通过了我所有的测试。但是,在将应用程序提交到商店并下载后,它的还原机制无法正常运行。

以下是方案:从商店下载应用程序。使用我的苹果ID进行应用内购买。删除了应用。重新安装它。请求使用相同的苹果ID进行恢复,我收到以下错误:"您输入的苹果ID无法找到或您的密码不正确。请再试一次。"。它刚刚启动了商店套件流程。

我的代码来了:

    SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifiers]];
    productsRequest.delegate = self;
    [productsRequest start];

============回复

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
        self.products = response.products;
        NSMutableArray * invalidProductIdentifiersMutable = [NSMutableArray new];

    for (NSString *invalidIdentifier in response.invalidProductIdentifiers) {
        [invalidProductIdentifiersMutable addObject:invalidIdentifier];
    }
    self.invalidProductIdentifiers = [[NSArray alloc] initWithArray:invalidProductIdentifiersMutable];
    if (self.products) {
                [self restorePurchase];
    }
}

============开始

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) {
    SKReceiptRefreshRequest * request = [[SKReceiptRefreshRequest alloc] init];
    request.delegate = self;
    [request start];
}
[self registerAsPurchaseObserver];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

======结果

-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
    [Delegate transactionDidFail];
}

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
    NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
    if (receipt) {
        [Delegate transactionDidRestorePurchaseSuccessfullyWithReciept:receipt];
    }
    else{
        [Delegate transactionDidFail];
    }
}

我强调它在开发过程中正常工作并多次通过我的所有测试。 但是从商店下载后它无法正常工作,而且只有恢复才能正常工作。购买工作正常。

1 个答案:

答案 0 :(得分:0)

我的应用程序遇到了类似的问题。我是如何工作的是:

  1. 删除应用
  2. 从应用商店下载应用
  3. 启动应用程序并单击调用的恢复购买按钮: [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
  4. 问题可能是您在Xcode中启动应用程序?无论如何,给这些步骤一个镜头。