Определение, активен ли одноразовый продукт Google Play (IAB) - PullRequest
0 голосов
/ 29 марта 2019

Мы сталкиваемся с каким-то интересным сценарием.В одном из наших производственных приложений к нам пришел пользователь, который купил приложение раньше, и даже тогда он не может использовать расширенные функции.

В нашем приложении мы использовали IAP (библиотека биллинга Google Play,не IABHelper) с одноразовым методом продукта: мы позволяем пользователю купить приложение, а затем никогда не потребляем продукт.Метод, которым мы следуем: После прочтения некоторых вопросов здесь и изучения документации, я обнаружил, что BillingClient.queryPurchases(INAPP) сканирует покупки локально и каких-либо неактивных продуктов там нет, и из-за того, что они нетам, если премиум-функции активны, мы отключаем его.

BillingClient.queryPurchaseHistoryAsync(INAPP, listener) возвращает все продуктов, независимо от того, активны они или нет, но продукт не является подпиской, поэтому Purchase.isAutoRenewing()всегда ложно.

Вот проблема: если мы сотрем данные Google Play или сбросим телефон и снова загрузим приложение, так как данные в Google Play удалены, BillingClient.queryPurchases(INAPP) возвращает пустой список, дажеесли пользователь купил приложение раньше.В этом сценарии метод BillingClient.queryPurchaseHistoryAsync(INAPP, listener) представляется полезным, но он не содержит никакой информации о том, является ли продукт активным или возвращен .

Конечный случайнам нужно потреблять продукт, если он возвращается, чтобы закрыть премиальные функции (или активировать их, так как нет локальной информации), но нет данных о том, что продукт куплен, а данные из самого API с queryPurchaseHistoryAsync не содержат никаких данных.информация о товаре активна или нет, она просто есть, показывает, что она была куплена раньше.Так как же мы узнаем, что кто-то купил этот товар и не получил возмещение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...