queryPurchases () vs queryPurchaseHistoryAsync () для того, чтобы "восстановить" функциональность?

Я использую библиотеку Play Billing для запуска и управления покупками, которые, в свою очередь, разблокировали дополнительную функциональность в приложении. Эта часть работает.

однако, каков наилучший способ "восстановить" покупки. Скажем, например, кто-то, кто купил приложение покупает новый телефон. Входит в Play Store, загружает мое приложение, а затем обнаруживает, что отображается экран оплаты для "обновления". iOS имеет специальный метод для этого, но я не знаю для Андроид.

мои мысли-запросить Play Store и подтвердить, была ли учетная запись ранее успешно куплена, если да, то я вызову функцию локального обновления в приложении.

похоже, есть два аналогичных метода. Но какой из них я должен использовать в этом сценарии? Где пользователь либо вытер свой телефон, либо купил новый?

queryPurchases ()? Или queryPurchaseHistoryAsync ()?

2 ответов


в документации queryPurchases использует кэш приложения Play Store, чтобы получить результаты в то время как queryPurchaseHistoryAsyncфактически проверяет AP покупки для самых последних покупок. Итак, в вашем случае вы должны проверить Asyncметод.

queryPurchases

получить информацию о покупках для всех предметов, купленных в вашем приложении. Этот метод использует кэш приложения Google Play Store без инициирования сетевого запроса.

queryPurchaseHistoryAsync

возвращает самая последняя покупка, сделанная пользователем для каждого SKU, даже если эта покупка истекла, отменена или потреблена.

кроме того, не забудьте проверить документацию. Он рекомендует Cache purchase details on your servers. https://developer.android.com/google/play/developer-api.html#practices


вы должны использовать queryPurchases. Это дает вам все текущие активные (неиспользованные, не отмененные, не истекшие) покупки для каждого SKU.

queryPurchaseHistoryAsync не будет делать то, что вам нужно, потому что он даст вам только список последние покупки для каждого SKU. Они могли истечь, быть отменены или потреблены, и нет возможности сказать. Поэтому этот ответ нельзя использовать, чтобы сообщить, какие покупки применять в вашем приложении.

насколько я вижу, единственный допустимое использование для queryPurchaseHistoryAsync - предоставить пользователю список их истории покупок. Это немного странно.

дополнительные услуги: queryPurchases является синхронным, поэтому в большинстве случаев его нужно запускать в каком-то фоновом рабочем потоке. Я запускаю свой в AsyncTask.