2

我正在关注 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];

}
4

0 回答 0