我在恢复已完成的交易时遇到了一些问题.
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Run Code Online (Sandbox Code Playgroud)
我添加了几个例子中提到的观察者,我已经尝试过添加paymentQueueRestoreCompletedTransactionsFinished并且已经有了updatedTransactions.paymentQueueRestoreCompletedTransactionsFinished说没有交易.
我可以买一个产品,如果我再次尝试购买,它会阻止我并说我已经购买了该产品,使用此代码.
SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)
我想也许我的捆绑标识符有问题,但这看起来很好,如果不是,购买将不起作用.
我一直在设备和模拟器上尝试这个,但这有相同的结果.此外,它没有什么区别如果我使用英国或美国商店.
我真的抓住了吸管,找出为什么这对我不起作用?
我正在尝试在我的应用中测试应用内购买.
当我通过购买应用内购买的测试用户恢复应用内购买时,一切正常.
但是当我尝试在没有进行应用内购买的用户恢复应用内购买时,我希望框架调用以下方法:
-paymentQueue:restoreCompletedTransactionsFailedWithError:
但相反框架调用:
-paymentQueueRestoreCompletedTransactionsFinished:
喜欢我的测试用户已经购买了应用内购买....
这是正常行为吗?如果是这样,我如何测试用户试图恢复而不购买应用内购买?
我的应用程序包含可消耗的IAP产品,当我使用以下代码调用验证收据时返回多个事务:
[[NSBundle mainBundle] appStoreReceiptURL];
Run Code Online (Sandbox Code Playgroud)
有没有办法只返回最后一笔交易?
它与恢复交易有关吗?
我检查了restoreCompletedTransaction inapp purchase的多次收据计数,这个iOS应用内购买恢复返回了许多交易.
我试图恢复所有购买但它没有用.
我正在使用这些线路来拨打收据:
- (void) checkReceipt {
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if(!receipt) {
}
NSError *error;
NSDictionary *requestContents = @{@"receipt-data": [receipt base64EncodedStringWithOptions:0]};
NSLog(@"requestContents:%@", requestContents);
NSData *requestData = [NSJSONSerialization dataWithJSONObject:requestContents
options:0
error:&error];
if (!requestData) { }
NSURL *storeURL = [NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *storeRequest = [NSMutableURLRequest requestWithURL:storeURL];
[storeRequest setHTTPMethod:@"POST"];
[storeRequest setHTTPBody:requestData];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:storeRequest …Run Code Online (Sandbox Code Playgroud)