У меня есть транзакции восстановления, которые все еще застревают в моей очереди платежей - потому что я никогда не звонил finishTransaction
с транзакцией после ее восстановления, когда я тестировал ошибочное действие покупки восстановления.Очистка SKPAymentsQueue: принудительное выполнение незавершенных транзакций
Из некоторых онлайн-исследований я понимаю, что мне нужно вручную принудительно завершить незавершенные транзакции в очереди платежей.
Кто разместил этот код в Objective-C:
// take current payment queue
SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
// finish ALL transactions in queue
[currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[currentQueue finishTransaction:(SKPaymentTransaction *)obj];
}];
Я понятия не имею, как превратить его в Swift 2.0.
Может ли кто-нибудь помочь мне сделать это? Спасибо :-)
Ahh. Замечательно! Я просто создаю временную кнопку, чтобы связать ее как IBAction и запустить код. Будет ли это работать? Или мне нужно настроить еще один тестер для песочницы и поместить код в код покупки? Извините, очень новый :-) –
Если вы просто хотите очистить неудачные транзакции, которые в настоящее время застревают, тогда временная кнопка является хорошим решением. Тем не менее, я бы добавил такой код в свой метод SKProductsRequestDelegate updatedTransactions. Важно справляться с ошибками при покупке приложений из-за таких вещей, как плохая сетевая связь/недостаточные средства/и т. Д. Кроме того, в цикле вы должны проверить состояние транзакции и не просто завершить каждую транзакцию. См. Мой обновленный ответ. –
Идеальный смысл. Я сделаю то, что вы предлагаете. Tyvm. –