#android #flutter #revenuecat
#Android #трепетать #выручка
Вопрос:
Я использую плагин Revenuecat (purchases_flutter: ^3.7.0) в своем приложении для Android Flutter. Однако я заметил, что даже если (тестовая) подписка была завершена, код показывает, что она все еще активна.
Я использую следующий метод, чтобы определить, активна подписка или нет.
static isUserSubscribed() async { bool _isSubscribed = false; await Purchases.setDebugLogsEnabled(false); await Purchases.setup(revenueCatId); if (userId != null) { await Purchases.setup(revenueCatId, appUserId: userId); PurchaserInfo purchaserInfo = await Purchases.getPurchaserInfo(); if (purchaserInfo.entitlements.all["Ads Free"] != null amp;amp; purchaserInfo.entitlements.all["Ads Free"].isActive != null amp;amp; purchaserInfo.entitlements.all["Ads Free"].isActive) { // it comes here even though the subscription has been expired _isSubscribed = true; } return _isSubscribed; }
Я заметил, что когда я делаю тестовую покупку и даже после окончания подписки, описанный выше метод всегда возвращает значение true. Я даже перезапустил приложение, вышел из системы и даже очистил память.
Если я пойду в revenucat.com и удалите пользователя, выполнив поиск по адресу электронной почты, после чего он начнет возвращать ложь. Срок моей тестовой подписки истек утром около 9:00 утра, но вечером она также была активна в приложении.
Любая помощь будет признательна
Комментарии:
1. Пара вещей, которые я вижу из кода: 1)
Purchases.setup
следует вызывать только один раз при запуске приложения — возможно, вы настраиваете несколько экземпляров покупок, имеющих его в этой функции, и проверяете статус подписки на неправильном экземпляре. 2) Должно быть достаточно просто проверитьpurchaserInfo.entitlements.all["Ads Free"].isActive
, все остальные условия избыточны, и иногда цепная логика играет с нами злую шутку при отладке.2. Я вызываю этот метод в initState() по мере запуска приложения и при его запуске. Но я еще раз проверю, чтобы убедиться, что я не звоню в несколько мест. Также я изменю условие «если» и дам вам знать. Спасибо, что уделили мне время.