Перейти к содержанию
Fire Monkey от А до Я
  • 0

Кэширование Андроид IAP и компонент InAppPurchase


ba234

Вопрос

Может дело и не в компоненте, а просто так Андроид работает?

В документации (здесь) пишут, что "... Google Play клиент кэширует платежную информация локально на устройстве ... и ...  вызовы будут обслуживаться через поиск в кэше, а не через сетевое подключение ... ". И вроде, действительно всё работает.

Если у TInAppPurchase вызвать SetupInAppPurchase и QueryProducts, отключить на устройстве интернет, то и с выключенным интернетом метод  IsProductPurchased() будет возвращать true для купленных продуктов.

НО! Перезагружаем девайс - и всё, кэш улетучился! IsProductPurchased() будет = false! (Пока не вернём интернет и не выполним заново SetupInAppPurchase + QueryProducts). Не совсем понятно зачем такой кэш нужен-то?

Понятно что можно какое-то своё кэширование придумать, но как-то велосипед изобретать не хочется, может я что-то делаю не так?

 

Update:

И обратная ситуация: Есть два андроид устройства, аккаунт в Play настроен один и тот же, интернет подключен. Делаем покупку на одном из устройств, всё замечательно. НО! На втором эта покупка не отображается, сколько раз не перезапускай приложение со всеми SetupInAppPurchase и QueryProducts!

А отобразится она только после перезагрузки второго девайса (и видимо, убития таким образом локального кэша). Можно ли этот In-App кэш отключить как-то?

 

Изменено пользователем ba234
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Я делаю велосипед - после покупки делаю хеш-строку на базе "id-продукта + параметры устройства" и пишу ее в файл. При запуске приложения, сначала проверяю наличие и валидность строки, а если не вышло, то потом IsProductPurchased(). Велосипед из десятка строчек работает надежно и не зависит от перезагрузок. 

Ссылка на комментарий
  • 0

Евгений, спасибо! Примерно такой велосипед у меня и получился.

Что же касается принудительно сброса (обновления) In-App Purchase кэша - видимо придётся просто информировать пользователя, что в случае отсутствия уже купленного продукта необходимо включить интернет и перезагрузить девайс.

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

Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...