Я все сделал правильно, вот интегрированный скриншот с покупками iTunesConnect и мой простой код.Только он говорит мне "нет комплексной покупки".Я делал это сотни раз, но до сих пор не понимаю этого.Мой productID хорошо подходит для itunes, как в коде.Так в чем же проблема?Помогите, пожалуйста, ребята:)
Код:
#import ....
#import ....
#define kTutorialPointProductID @"com.mathrack.SocialFame.CoinsPlus"
..........
..........
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self fetchAvailableProducts];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault]; //UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.shadowImage = [UIImage new];////UIImageNamed:@"transparent.png"
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];
}
-(void)fetchAvailableProducts{
NSSet *productIdentifiers = [NSSet
setWithObjects:kTutorialPointProductID,nil];
productsRequest = [[SKProductsRequest alloc]
initWithProductIdentifiers:productIdentifiers];
productsRequest.delegate = self;
[productsRequest start];
}
- (BOOL)canMakePurchases
{
return [SKPaymentQueue canMakePayments];
}
- (void)purchaseMyProduct:(SKProduct*)product{
if ([self canMakePurchases]) {
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Les achats intégrés sont désactiver sur votre appareil" message:nil delegate:
self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
}
}
- (IBAction)buy50coins:(id)sender {
[self purchaseMyProduct:[validProducts objectAtIndex:0]];
}
#pragma mark StoreKit Delegate
-(void)paymentQueue:(SKPaymentQueue *)queue
updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
NSLog(@"Purchasing");
break;
case SKPaymentTransactionStatePurchased:
if ([transaction.payment.productIdentifier
isEqualToString:kTutorialPointProductID]) {
NSLog(@"Purchased ");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"Restored ");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self purchaseFailed];
NSLog(@"Purchase failed ");
break;
default:
break;
}
}
}
-(void)productsRequest:(SKProductsRequest *)request
didReceiveResponse:(SKProductsResponse *)response
{
SKProduct *validProduct = nil;
int count = [response.products count];
if (count>0) {
validProducts = response.products;
validProduct = [response.products objectAtIndex:0];
if ([validProduct.productIdentifier
isEqualToString:kTutorialPointProductID]) {
}
} else {
UIAlertView *tmp = [[UIAlertView alloc]
initWithTitle:@"Non disponible"
message:@"Aucun produit à acheter"
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[tmp show];
}
}
- (void)purchaseFailed {
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Achat impossible" message:@"Un problème est survenue lors de votre achat, veuillez réessayer ulterieurement" delegate:
self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
}
ItunesConnect картинка:
![enter image description here](https://i.stack.imgur.com/NDfGx.png)