■Incident
After executing restoreCompletedTransactions
and finish
a transaction of the StateRestored
that occurred, the finished
transaction occurred again as StatePurchased
. StatePurchasedagain. When this occurred, no functions other than
restoreCompletedTransactionswere called, the Transaction identifier was the same and only the state changed from
StateRestoredto
StatePurchased`.
This is not a subscription renewal or other timing.
■Information I want to get.
We are aware that StatePurchased
Transactions that have been purchased and finishTransaction
in the past will not occur again with updatedTransactions
.
However, by performing the following steps, a finishTransaction
Trasnsaction that has been finishTransaction
will occur again.
What is the cause of this and how can it be addressed?
■step
- prepare an App Store account (Sandbox) with a lot of purchase information.
In the case of the actual account where the event occurred, there were approximately 70 purchases. The event occurs even if the subscription is still subscribed or the subscription period has ended. The event has been confirmed in both Sandbox and production environments.
-
call
restoreCompletedTransactions
against SKPaymentQueue. -
updatedTransactions
is called and an array of Transactions is passed over.
In this case, the transactionState
of all Transactions is StateRestored
.
- when the Transaction passed in 3 is
finished
for SKPaymentQueue,
updatedTransactions` is called again.
Except that in this case, all Transactions have a transactionState
of StatePurchased
,
All properties are identical to those passed in 3, including the transactionIdentifer.
However, not all of the array of Transactions passed in 3 is passed, but some of it.
(In the actual event, 75 Transactions were passed in 3 and 35 Transactions were passed in 4.)