Что касается того, что происходит с> 20Mb при соединении 3G, это не подведет. Контент доставляется не с серверов Apple (где установлен лимит в 20 Мб), а с ваших серверов. Итак, загрузка будет идти как обычно. Однако при большом размере загрузки увеличивается вероятность того, что он не будет завершен. Здесь вы можете проверить, нужно ли вам доставлять дополнительный контент, когда это возможно.
В руководстве по программированию в приложении это достаточно хорошо освещено.
В конечном счете, ответственность за правильную доставку контента лежит на вас. Apple предоставит механизмы для определения необходимости восстановления покупки. Вы восстанавливали контент в ряде ситуаций (пользователь получил новый телефон, пользователь переустановил приложение, пользователь не смог получить контент при первоначальной покупке и т. Д.). Ответственность за доставку всего контента лежит на вас (как на разработчике приложения).
В случае с наименьшим количеством работы для вас за непотребляемые предметы, купленные после покупки, больше не будет взиматься плата. То есть, если они покупают товар один раз, то попытка купить его второй раз (из-за того, что приложение понимает, что оно было куплено) StoreKit вернет успешную покупку, но не потребует оплаты с пользователя.
На более активном уровне вы можете получить список купленных предметов через restoreCompletedTransactions
при запуске приложения и доставить недостающий контент.