我正在关注 Ray Wenderlich 教程,即使我使用他的代码,也会发生同样的事情。
我将所有文件托管在我自己的服务器上,该服务器正在完美地连接、下载和验证收据。我的问题是,当我在 plist 中将可消耗变量设置为 false 时,它会作为 true,反之亦然。
我只是很困惑为什么它做的与它应该做的相反。
因此,使用此代码,它认为它是可消耗的。
<dict>
<key>productIdentifier</key>
<string>com.test.hello</string>
<key>icon</key>
<string>icon_hardwords.png</string>
<key>consumable</key>
<false/>
<key>bundleDir</key>
<string>HardWords</string>
</dict>
这是提供交易下载的代码。
- (void)provideContentForTransaction:
(SKPaymentTransaction *)transaction
productIdentifier:(NSString *)productIdentifier {
IAPProduct * product = _products[productIdentifier];
if (transaction.downloads) {
product.skDownload = transaction.downloads[0];
if (transaction.downloads.count > 1) {
NSLog(@"Unexpected number of downloads!");
}
[[SKPaymentQueue defaultQueue]
startDownloads:transaction.downloads];
} else {
// Put the code from before here
IAPProduct * product = _products[productIdentifier];
if (product.info.consumable) {
[self
purchaseConsumable:product.info.consumableIdentifier
forProductIdentifier:productIdentifier
amount:product.info.consumableAmount];
} else {
NSURL * bundleURL = [[NSBundle mainBundle].resourceURL
URLByAppendingPathComponent:product.info.bundleDir];
[self purchaseNonconsumableAtURL:bundleURL
forProductIdentifier:productIdentifier];
}
[self notifyStatusForProductIdentifier:productIdentifier
string:@"Purchase complete!"];
product.purchaseInProgress = NO;
[[SKPaymentQueue defaultQueue] finishTransaction:
transaction];
}
}
这是它在代码中停止的 NSAssert
- (void)buyProduct:(IAPProduct *)product
{
NSAssert(product.allowedToPurchase, @"This product isn't allowed to be purchased");
NSLog(@"Buying %@...", product.productIdentifier);
product.purchaseInProgress = YES;
SKPayment *paypment = [SKPayment paymentWithProduct:product.skProduct];
[[SKPaymentQueue defaultQueue] addPayment:paypment];
}