ToneSnap_FSX_Flutter/lib/modules/launch/launch_controller.dart
fengshengxiong caded892d9 1.新增瀑布流插页广告
2.新增增埋点
2024-08-14 13:56:43 +08:00

113 lines
3.2 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:async';
import 'package:get/get.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:tone_snap/ads/interstitial_ad_manager.dart';
import 'package:tone_snap/data/enum/ad_scenes.dart';
import 'package:tone_snap/data/enum/app_side_enum.dart';
import 'package:tone_snap/data/storage/music_box.dart';
import 'package:tone_snap/firebase/firebase_analytics_manager.dart';
import 'package:tone_snap/global/app_config.dart';
import 'package:tone_snap/global/network_connectivity_service.dart';
import 'package:tone_snap/modules/sideb/controllers/main_controller.dart';
import 'package:tone_snap/routes/app_routes.dart';
import 'package:tone_snap/utils/log_util.dart';
class LaunchController extends GetxController with GetSingleTickerProviderStateMixin {
static LaunchController get to => Get.find<LaunchController>();
Timer? _timer;
/// 进度总时长
var timeTotal = 10 * 1000;
/// 当前进度
var currentProcess = 0.obs;
/// 进度每次变化值
var changeValue = 10;
@override
void onInit() {
super.onInit();
_startTimer();
Get.put(NetworkConnectivityService());
FirebaseAnalyticsManager.logLaunchPV();
}
@override
void onClose() {
_stopTimer();
super.onClose();
}
/// 开始定时器
void _startTimer() {
_timer = Timer.periodic(const Duration(milliseconds: 10), (Timer t) {
if (currentProcess.value + changeValue >= timeTotal) {
currentProcess.value = timeTotal;
_stopTimer();
_checkEnter();
return;
}
currentProcess.value += changeValue;
});
}
/// 停止定时器
void _stopTimer() {
_timer?.cancel();
_timer = null;
}
/// 修改进度变化值
void editChangeValue() {
changeValue = 200;
}
/// 校验开关和版本决定进A还是B
Future<void> _checkEnter() async {
bool isOpenedSideB = MusicBox().getIsOpenedSideB();
if (isOpenedSideB) {
LogUtil.d('进入过B面');
_openSideB('进入过B面');
} else {
bool enter = MusicBox().getEnter();
String versionCode = await MusicBox().getVersionCode();
final packageInfo = await PackageInfo.fromPlatform();
if (versionCode != packageInfo.version) {
LogUtil.d('版本不相同进入B面');
_openSideB('版本不相同');
} else {
if (enter) {
LogUtil.d('开关:打开');
_openSideB('版本相同, 开关打开');
} else {
LogUtil.d('开关:关闭');
_openSideA();
}
}
}
}
void _openSideA() {
InterstitialAdManager().showAdIfAvailable(
AdScenes.coldLoading.name,
onTap: () {
AppConfig.appSideEnum = AppSideEnum.sideA;
Get.offNamed(AppRoutes.initialA);
},
);
FirebaseAnalyticsManager.logJumpEvent('A', '版本相同,开关关闭');
}
void _openSideB(String reason) {
InterstitialAdManager().showAdIfAvailable(
AdScenes.coldLoading.name,
onTap: () {
AppConfig.appSideEnum = AppSideEnum.sideB;
MainController.to.changeTheme();
Get.offNamed(AppRoutes.initialB);
MusicBox().putIsOpenedSideB(true);
},
);
FirebaseAnalyticsManager.logJumpEvent('B', reason);
}
}