我目前已经创建了一系列调用和返回我创建的In-App Purchase产品的方法。我可以毫无问题地致电SKProductRequest
,我甚至可以购买该商品并收到成功的购买通知(SKPaymentTransactionStatePurchased
)。
问题是无论出于何种原因,当我最初运行应用时,我必须调用以下方法2次才能收到非null 响应来自Apple:
/// In app purchases
- (IBAction)BuyProduct:(id)sender {
if ([SKPaymentQueue canMakePayments]) {
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:_productID]];
request.delegate = self;
[request start];
} else {
NSLog(@"Please enable In App Purchasing in your settings");
}
}
#pragma mark _
#pragma mark SKProductsRequestDelegate
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSArray *products = response.products;
if (products.count != 0) {
NSLog(@"Products available: %@", _product.localizedTitle);
_product = products[0];
} else {
NSLog(@"Products not found.");
}
products = response.invalidProductIdentifiers;
for (SKProduct *product in products) {
NSLog(@"Product not found: %@", product);
}
}
每次我第一次拨打BuyProduct IBAction
时都会收到:
(原谅破折号 - 只需清除我的个人信息!)
---------- --.07.55.823 -------[2474:827710] Products available: (null)
然后第二时间以及之后我调用相同的IBAction
按钮,我正确地收到了IAP名称,
---------- --.08.03.142 -------[2474:827710] Products available: TEST IAP
---------- --.08.04.455 -------[2474:827710] Products available: TEST IAP
SO ,我只是想弄清楚为什么我需要调用这些方法2次才能让Apple(或我的代码)成功返回我的IAP产品名称。如果有人能帮助我,我会非常感激!