Проверка автообновления 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

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