Возможно, вы используете Учебный код Ray Wunderlich для покупки приложений. Там Кодекс говорит:
- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers {
if ((self = [super init])) {
// Store product identifiers
_productIdentifiers = productIdentifiers;
// Check for previously purchased products
_purchasedProductIdentifiers = [NSMutableSet set];
for (NSString * productIdentifier in _productIdentifiers) {
BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier];
if (productPurchased) {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; // CHECK THIS
[_purchasedProductIdentifiers addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
} else {
NSLog(@"Not purchased: %@", productIdentifier);
}
}
Там вы можете увидеть, что addTransactionObserver только называется, если продукт уже pruchased. Если вы переместите эту строку кода перед запросом if, вы получите желаемый результат.
[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; // MOVE HERE
if (productPurchased) {
[_purchasedProductIdentifiers addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
} else {
NSLog(@"Not purchased: %@", productIdentifier);
}
В методе failedTransaction теперь вы можете вызвать
[[NSNotificationCenter defaultCenter] postNotificationName:IAPHelperProductPurchasedNotification object:nil userInfo:nil];
Теперь вы можете проверить нулевую величину, посланное уведомления в текущем режиме просмотра
Это странная часть об этом. Когда я нажимаю кнопку отмены, я все равно получаю SKPaymentTransactionStateFailed в paymentQueue: updatedTransactions: метод и следующая ошибка: Error Domain = SKErrorDomain Code = 2 «Не удается подключиться к iTunes Store» – dariaa
Это несчастливо.Поэтому я бы проверил подключение к Интернету с использованием класса Reachability от Apple, и если у вас есть возможность подключения, то вы знаете, что он был либо отменен, либо покупка была неудачной с сервером. Я бы также опубликовал отчет об ошибке, в котором указано, что свойство ошибки не работает как задокументированное, и попросите исправить. –
Это не проблема подключения - по какой-то причине ошибка является одинаковой при отмене транзакции или при ее отсутствии по любой другой причине. – Stavash