Изменить
Когда квитанция приложения iOS недоступна? Вот один сценарий, в котором квитанция приложения будет отсутствовать. Если пользователь покупает ваше приложение в iTunes на компьютере (устройстве, отличном от iOS), а затем синхронизирует это приложение со своим устройством, квитанции о приложении не будет.
См. это видео с WWDC 2014, начиная примерно с 48:30.
Второе редактирование
Другая ситуация, когда квитанция приложения будет отсутствовать, — это когда пользователь восстанавливает данные на новом устройстве. Квитанции приложения относятся к конкретному устройству, и их необходимо повторно загрузить для нового устройства.
Оригинальный ответ
Я нахожусь в процессе переключения приложения с платного на бесплатное, поэтому мне также нужна исходная версия приложения. Я не знаю ответа на ваш вопрос «гарантировано ли это», но вот как я решил с этим справиться.
При запуске я ищу ранее сохраненную исходную версию приложения. Если таковой еще нет (это наверное первый запуск) проверяю наличие сети. Если все в порядке, я проверяю квитанцию приложения. Если он есть, я отправляю его в магазин приложений для проверки и, в случае успеха, извлекаю исходную версию приложения из ответа и сохраняю ее. При последующих запусках сохраняется это постоянное значение, поэтому я больше не проверяю квитанцию. Если квитанция приложения отсутствует при запуске, я не запрашиваю обновление квитанции. Я согласен с вами, здесь нет контекста.
Я предполагаю, что это будет работать во всех случаях, когда сеть доступна, но я делаю еще одну проверку в точке IAP. Как это...
┌────────────┐
│ Tap Add │
└────────────┘
│
┌───────────────────────────────────────────────────────┤
│ │
│ ▼
│ ┌────────────────────┐ ┌──────────────────────┐
│ ┌──Don't Know─────────────────│ Pre-IAP customer? │───Yes─────────▶│ Create new thing │
│ │ └────────────────────┘ └──────────────────────┘
│ │ │
│ │ │ ┌──────────────────────┐
│ │ └──────No─────────────────▶│ IAP │
│ │ └──────────────────────┘
│ │
│ ▼ ┌────────────────────────────────────────┐
│ ┌──────────────────────┐ │Maybe: Allow one grace thing. Warn that │
│ │ Network Reachable? │────No──────▶│ the user must connect to the internet │
│ └──────────────────────┘ │ before adding another thing. │
│ │ └────────────────────────────────────────┘
│ Yes
│ │
│ ▼ ┌────────────────────────────────────────────────────┐
│ ┌──────────────────────┐ │ Maybe, depending on your requirements: Alert the │
│ │ Receipt Present? │────No──────▶│user that the app receipt is not present and the app│
│ └──────────────────────┘ │ store may ask for their credentials. │
│ │ └────────────────────────────────────────────────────┘
│ Yes │
│ │ ┌─────────────┘
│ ▼ ▼
│ ┌──────────────────────┐ ┌────────────────────────┐
│ │ Valid? │◀────────────│ Refresh the receipt. │
│ └──────────────────────┘ └────────────────────────┘
│ │
│ └─Yes───┐
│ ▼
│ ┌───────────────────────────────────────┐
└──│ Persist original_application_version │
└───────────────────────────────────────┘
person
Murray Sagal
schedule
05.10.2016