可能因为处于测试阶段而对 iOS 不起作用?它正在iOS 6模拟器和设备上工作,但不适用于iOS 7模拟器或设备,无法连接到iTunes。
法典:
- (void)purchaseRemoveAds
{
NSLog(@"ITEMS :%@", [IAPShare sharedHelper].iap.productIdentifiers);
[[IAPShare sharedHelper].iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse* response)
{
if(response > 0 ) {
NSLog(@"PRODUCTS: %@", [IAPShare sharedHelper].iap.products);
if ([[IAPShare sharedHelper].iap.products count] != 0) {
SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];
[[IAPShare sharedHelper].iap buyProduct:product
onCompletion:^(SKPaymentTransaction* trans){
if(trans.error)
{
NSLog(@"Fail %@",[trans.error localizedDescription]);
}
else if(trans.transactionState == SKPaymentTransactionStatePurchased) {
[[IAPShare sharedHelper].iap provideContent:@"RemoveAds"];
NSLog(@"SUCCESS %@",response);
NSLog(@"Purchases %@",[IAPShare sharedHelper].iap.purchasedProducts);
[bannerView_ removeFromSuperview];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success!" message:[NSString stringWithFormat:@"You have successfully purchased %@", product.localizedTitle] delegate:nil cancelButtonTitle:@"OK!" otherButtonTitles: nil];
[alert show];
}
else if(trans.transactionState == SKPaymentTransactionStateFailed) {
NSLog(@"Fail");
}
}];//end of buy product
}
}
}];
}
根据苹果文档,它们不支持iOS7模拟器中的应用内购买。您需要使用设备来测试应用内购买。我不知道为什么也不能使用设备测试应用内购买。
请参考苹果文档。
我今天在一台旧设备上遇到了类似的问题。 我没有从我的产品请求中返回任何产品,而是返回一系列 0 个产品。
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"Received products results - count: %d...", [response.products count]);
}
它正在其他 2 台设备上工作并返回数据,而这款 iOS5 设备是我的孩子用来玩的设备,所以我想也许有人一度从此设备上的商店下载了该应用程序。 所以我重新启动了设备,在设备上将我的个人帐户从商店中注销,并删除了该应用程序,当我从XCode 5重新安装该应用程序时,它在沙盒中运行良好。
因此,在我看来,为了提高这些 API 的安全性,一些事情正在发生变化。