Отправляют ли автоматически обновляемые подписки транзакцию SKPaymentTransactionStatePurchased при автоматическом продлении? - PullRequest
13 голосов
/ 22 марта 2011

Отправляет ли AppStore транзакцию при автоматическом продлении подписки с автоматическим продлением? Если это так, может ли оно быть надежно обнаружено приложением в следующий раз, когда приложение загружается, если оно устанавливает себя в качестве наблюдателя:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

Будет ли новая автоматически продленная транзакция совершать звонок на:

-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

с транзакцией.transactionState == SKPaymentTransactionStatePurchased?

Если так, отлично. Если нет, значит ли это, что вы должны проверять все транзакции каждый раз, когда срок действия автообновляемой подписки истекает, используя:

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Спасибо ...

1 Ответ

12 голосов
/ 09 апреля 2011

После некоторых исследований я могу ответить на свой вопрос и поднять еще одну связанную с этим проблему. App Store вызывает paymentQueue и проводит транзакцию. Транзакция проведена с параметром транзакции.transactionState == SKPaymentTransactionStateRestored, notaction.transactionState == SKPaymentTransactionStatePurchased.

Проблема в том, что, к сожалению, это публикуется только на одном устройстве. Второе устройство не получает сообщения. Поэтому, чтобы обнаружить автообновление или, точнее, обнаружить отсутствие автообновления и запретить устройству постоянную подписку, необходимо выполнить restoreCompletedTransaction или «http опубликовать 64-битный кодированный JSON, содержащий последнюю транзакцию». Если Fomer, пользователь должен дать свой пароль; это навязчиво Если последнее, много дополнительного кодирования не требуется. Итак, мой вопрос ... почему у StoreKit нет команды:

(не существует) - [[SKPaymentQueue defaultQueue] restoreAttachedTransactions: (NSArray *) транзакции];

Эта команда будет выполняться точно так же, как restoreCompletedtRansactions, но она будет только восстанавливать присоединенные транзакции и, что наиболее важно, не потребует входа пользователя в систему. Он имеет ту же защиту безопасности, что и «HTTP-публикация 64-битного кодированного JSON, содержащего последнюю транзакцию», и позволяет выполнять весь процесс покупки внутри приложения в StoreKit, а не запрашивать код публикации в Интернете.

Если это имеет смысл для вас, пожалуйста, предложите, как передать это в Apple .... спасибо.

...