我有一个非常奇怪的问题。我已经为我的非耗材应用程序实现了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];
}
}
我强调它在开发过程中正常工作并多次通过我的所有测试。 但是从商店下载后它无法正常工作,而且只有恢复才能正常工作。购买工作正常。
答案 0 :(得分:0)
我的应用程序遇到了类似的问题。我是如何工作的是:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
问题可能是您在Xcode中启动应用程序?无论如何,给这些步骤一个镜头。