import 'dart:convert'; import 'package:firebase_remote_config/firebase_remote_config.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:wallpaperx/ads/interstitial_ad_manage.dart'; import 'package:wallpaperx/common/utils/log_print.dart'; import 'package:wallpaperx/common/utils/obj_util.dart'; import 'package:wallpaperx/common/utils/shared_util.dart'; class FirebaseRemoteConfigManager { static Future init() async { try { final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( fetchTimeout: const Duration(seconds: 15), minimumFetchInterval: Duration.zero, )); remoteConfig.onConfigUpdated.listen((event) async { remoteConfig.fetchAndActivate().then((e) { _setIsOpenSetting(remoteConfig); }); }); remoteConfig.fetchAndActivate().then((e) { _setIsOpenSetting(remoteConfig); }); } catch (e) { LogPrint.d(e); } } static void _setIsOpenSetting(FirebaseRemoteConfig remoteConfig) async { RemoteConfigValue all = remoteConfig.getValue("isopen"); if (ObjUtil.isEmpty(all.asString())) { UPCache.getInstance().setData("showAd", false); UPCache.getInstance().setData("version", ""); } else { Map isOpen = jsonDecode(all.asString()); UPCache.getInstance().setData("showAd", isOpen["isadopen"]); UPCache.getInstance().setData("version", isOpen["version"]); UPCache.getInstance().setData("http", isOpen["http"]); bool adSwitch = UPCache.getInstance().get('adSwitch') ?? false; if (!adSwitch) { final packageInfo = await PackageInfo.fromPlatform(); if (isOpen["version"] != packageInfo.version) { UPCache.getInstance().setData("adSwitch", true); InterstitialAdManager().loadAllAd(); } } } } }