Сценарий 2.
Если интернет взорвется, вы не получите -finishTransaction.
Но это здорово, потому что вы можете повторить попытку (NSTimer), и ваше приложение получит незавершенную транзакцию при запуске.
И это точно , как StoreKit предназначен для работы (хотя это не очевидно из чтения документов).
StoreKit поставляется с транзакциями по уважительной причине. Пользователь может просто выйти из приложения сразу после покупки, и вам все равно придется восстанавливаться после этого.
И именно поэтому Apple рекомендует настроить наблюдателя транзакций как можно скорее в жизненном цикле приложения.
Никогда не завершайте транзакцию до предоставления контента, вам придется внедрить собственную систему транзакций поверх StoreKit, и вы не хотите этого делать, поверьте мне (я видел, как это было сделано, это была катастрофа).
Редактировать: честно говоря, вероятность того, что пользователь отключит интернет после покупки и перед проверкой, будет смехотворно низкой. Парень был в интернете секунду назад, никто не выходит, чтобы отключить интернет во время покупки.
Но вполне возможно, что в этот момент пользователь прерывается и отправляет ваше приложение в фоновый режим.
Ваше приложение может быть убито по любой причине, которую iOS сочтет целесообразной
И когда ваши приложения запускаются снова, ваше приложение не помнит, чтобы у вас была начальная покупка, и магазинный комплект не очень поможет, поскольку вы уже завершили транзакцию.