Obj-C, Storekit restoreCompletedTransactions возвращает нулевые транзакции?
У меня возникли проблемы с восстановлением завершенных транзакций.
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Я добавил наблюдателя, упомянутого в нескольких примерах, я попытался добавить paymentQueueRestoreCompletedTransactionsFinished
и уже иметь updatedTransactions
. paymentQueueRestoreCompletedTransactionsFinished
говорит, что у меня нулевые транзакции.
Я могу купить продукт, и если я попытаюсь купить его снова, он остановит меня и говорит, что я уже купил продукт, используя этот код.
SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
Я думал, может быть, у меня была проблема с идентификатором моего пакета, но это кажется прекрасным, и покупка не будет работать, если это не так.
Я пробовал это на устройстве, а также на симуляторе, но это имеет тот же результат. Кроме того, это не имеет значения. Если я использую британский или американский магазин.
Я действительно хватаюсь за соломинку, чтобы узнать, почему это не работает для меня?
Ответы
Ответ 1
попробуйте сделать это так и проверьте количество массивов, также оно возвращает нуль?
- (void) checkPurchasedItems
{
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}//You Call This Function
//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
purchasedItemIDs = [[NSMutableArray alloc] init];
NSLog(@"received restored transactions: %i", queue.transactions.count);
for (SKPaymentTransaction *transaction in queue.transactions)
{
NSString *productID = transaction.payment.productIdentifier;
[purchasedItemIDs addObject:productID];
}
}
Ответ 2
В соответствии с docs:
Когда вы создаете новый продукт для продажи в своем магазине, вы выбираете, можно ли восстановить этот продукт или нет.
Итак, вопрос в том, настроен ли ваш продукт на восстановление?