Получить SKProduct от SKProductsRequest

Привет! Я пытаюсь добавить покупку в приложение в свое приложение, но каждый раз, когда я вызываю метод "buy", я получаю сообщение об ошибке "Неверный идентификатор продукта: (null)". Как я могу вызвать метод, не получая эти ошибки / Как я могу сделать продукт внутри метода покупки таким же, как продукт в ответе?

- (void)viewDidLoad {
    [super viewDidLoad];

    NSArray *productIdentifiers = @[@"product1"];   
}

- (void)fetchProducts {
    NSSet *identifierSet = [NSSet setWithArray:productIdentifier];
    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: identifierSet];
    request.delegate = self;
    [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    NSLog(@"Inside productsRequest");
    for(SKProduct *product in response.products) {
        NSLog(@"%@", product);
    }
}

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
    NSLog(@"Error %@", error);
}

-(void)unlock {
    SKProduct *product = [[SKProduct alloc] init];
    [self buy:product];
}


- (void)buy:(SKProduct *)product {
    SKPayment *payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}


- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for(SKPaymentTransaction *tx in transactions) {
        switch(tx.transactionState) {

            case SKPaymentTransactionStatePurchased:
                NSLog(@"Unlock %@", tx.payment.productIdentifier);
                [[SKPaymentQueue defaultQueue] finishTransaction:tx];
                break;

            case SKPaymentTransactionStateFailed:
                NSLog(@"Error: %@", tx.error);
                [[SKPaymentQueue defaultQueue] finishTransaction:tx];
                break;

            case SKPaymentTransactionStateRestored:
                NSLog(@"Unlock %@", tx.originalTransaction.payment.productIdentifier);
                [[SKPaymentQueue defaultQueue] finishTransaction:tx];
                break;
        }
    }
}

0 ответов

Другие вопросы по тегам