Проверка автообновления InApp Покупка iOS
Я внедряю Автообновляемую покупку InApp для iOS. Работает нормально первый месяц. Но я не могу знать, продлевается ли подписка пользователя автоматически или нет, что означает статус текущей покупки InApp.
Изучив так много ответов о Stackru, я понял, что должен предоставить кнопку "Восстановить" для восстановления транзакции. Я реализовал это также, и это дает все мои транзакции до даты. Итак, я не могу получить свою последнюю транзакцию. Поэтому, пожалуйста, помогите понять статус последней автоматически продленной транзакции, чтобы я мог обновить статус на моем сервере.
Ниже приведен код, который я использую для восстановления моей транзакции:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
и выполнение его делегатов следующим образом:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
NSLog(@"%@",queue );
NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);
NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
NSLog(@"received restored transactions: %zd", queue.transactions.count);
for (SKPaymentTransaction *transaction in queue.transactions)
{
NSString *productID = transaction.payment.productIdentifier;
[purchasedItemIDs addObject:productID];
NSLog (@"product id is %@" , productID.description);
NSLog (@"observationInfo is %@" , transaction.payment.productIdentifier.observationInfo);
// here put an if/then statement to write files based on previously purchased items
// example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
{
NSLog(@"Restore Error... %@",error.description);
}
1 ответ
Я полагаю, что восстановление транзакции не работает, если приложение запущено, а транзакция возобновлена. Пожалуйста, обратитесь к руководству StoreKit:-
После успешного продления подписки Store Kit добавляет транзакцию для продления в очередь транзакций. Ваше приложение проверяет очередь транзакций при запуске и обрабатывает обновление так же, как и любая другая транзакция. Обратите внимание, что если ваше приложение уже запущено, когда подписка возобновляется, наблюдатель транзакции не вызывается; Ваше приложение узнает об обновлении при следующем запуске.
После повторного запуска приложения, функция восстановления транзакции работает нормально с восстановлением текущей автоматически возобновленной транзакции.
С другой стороны, если вы хотите проверить, возобновлена ли транзакция или нет без перезапуска приложения, вы можете сделать это вручную, обновив "Квитанцию приложения".
Ссылка (срок действия и продление):- https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html