53 lines
1.9 KiB
Dart
53 lines
1.9 KiB
Dart
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<bool>("showAd", false);
|
|
UPCache.getInstance().setData<String>("version", "");
|
|
} else {
|
|
Map isOpen = jsonDecode(all.asString());
|
|
UPCache.getInstance().setData<bool>("showAd", isOpen["isadopen"]);
|
|
UPCache.getInstance().setData<String>("version", isOpen["version"]);
|
|
UPCache.getInstance().setData<String>("http", isOpen["http"]);
|
|
|
|
bool adSwitch = UPCache.getInstance().get<bool>('adSwitch') ?? false;
|
|
if (!adSwitch) {
|
|
final packageInfo = await PackageInfo.fromPlatform();
|
|
if (isOpen["version"] != packageInfo.version) {
|
|
UPCache.getInstance().setData<bool>("adSwitch", true);
|
|
InterstitialAdManager().loadAllAd();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|