Когда использовать restoreCompletedTransactions для покупок в приложении?

От Знатока Плагин Eclipse FAQ

следующий пример показывает, как сделать это в командной строке:

mvn eclipse:eclipse -DdownloadSources=true  -DdownloadJavadocs=true 

или в Вашем pom.xml:


  [...]
  
    [...]
    
      [...]
      
        org.apache.maven.plugins
        maven-eclipse-plugin
        
          true
          true
        
      
      [...]
    
    [...]
  
  [...]

46
задан otto 25 April 2013 в 15:31
поделиться

1 ответ

Обновление (июнь 2019 г.)

Документация Apple по этой теме была обновлена ​​в 2018 г. и является довольно полной. Многие из его рекомендаций согласуются с тем, что мы в итоге выяснили. Самым большим достижением с тех пор, как этот вопрос был впервые опубликован в 2009 году, является квитанция в App Store в iOS 7.

Если ссылка устареет в какой-то момент в будущем, я процитирую здесь часть документации.

Восстановление Приобретенные продукты

Пользователи восстанавливают транзакции, чтобы сохранить доступ к уже приобретенному контенту. Например, когда они переходят на новый телефон, они не теряют все товары, приобретенные на старом телефоне. Включите в свое приложение какой-либо механизм, позволяющий пользователю восстанавливать свои покупки, например кнопку «Восстановить покупки». При восстановлении покупок запрашиваются учетные данные пользователя в App Store, что прерывает работу вашего приложения: из-за этого не восстанавливайте покупки автоматически, особенно при каждом запуске вашего приложения.

В большинстве случаев все ваше приложение должно быть do обновляет квитанцию ​​и доставляет товары в квитанции. Обновленная квитанция содержит запись о покупках пользователя в этом приложении, на этом устройстве или на любом другом устройстве. Однако некоторым приложениям необходим альтернативный подход по одной из следующих причин:

  • Если вы используете контент, размещенный на сервере Apple, восстановление завершенных транзакций предоставляет вашему приложению объекты транзакций, которые оно использует для загрузки контента.
  • Если вам нужно для поддержки версий iOS до iOS 7, где квитанция приложения недоступна, вместо этого восстанавливайте завершенные транзакции.
  • Если ваше приложение использует невозобновляемые подписки, ваше приложение отвечает за процесс восстановления.

При обновлении квитанции в App Store запрашивается последняя копия квитанции. Обновление квитанции не создает новых транзакций. Хотя вам следует избегать обновления несколько раз подряд, это действие будет иметь тот же результат, что и обновление только один раз.

Восстановление завершенных транзакций создает новую транзакцию для каждой завершенной транзакции, сделанной пользователем, по существу воспроизводя историю для вашего наблюдателя очереди транзакций. Пока транзакции восстанавливаются, ваше приложение поддерживает собственное состояние, чтобы отслеживать, почему оно восстанавливает завершенные транзакции и как оно должно их обрабатывать. При многократном восстановлении создается несколько восстановленных транзакций для каждой завершенной транзакции.


Предыдущий ответ (2009-2012)

Написав вопрос и подумав над ним, Я придумал несколько решений.

Автоматически (не рекомендуется)

Один из вариантов - записать в пользовательских настройках по умолчанию, был ли restoreCompletedTransactions вызван (и успешно завершен) еще в приложении. Если нет, приложение вызывает его один раз при запуске. Поскольку этот флаг может храниться в том же месте, что и нерасходуемые платежи, если пользовательские настройки по умолчанию будут удалены позже, тогда метод восстановления будет вызываться снова при запуске приложения.

Таким образом, если существующий заказчик каким-то образом выполняет новый установив приложение, они все равно восстановят свои покупки автоматически. Если это новый клиент, который никогда ранее не запускал приложение, операция восстановления ничего не возвращает.

В любом случае restoreCompletedTransactions вызывается только один раз, а не при каждом запуске.

32
ответ дан 26 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: