app-starlock/lib/main.dart
Xie Jing 7b9a3a0daf feat(锁详情): 添加推送触发的远程开锁功能
实现推送消息触发的远程开锁请求流程,包括:
1. 新增RemoteUnlockRequestEvent和PushExtraEvent事件类型
2. 在锁详情页添加倒计时弹窗和动画效果
3. 实现Native层推送数据缓存和转发机制
4. 添加RemoteUnlockCoordinator处理应用未启动时的推送导航
2025-11-29 14:45:42 +08:00

126 lines
4.5 KiB
Dart
Executable File
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 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bugly/flutter_bugly.dart';
import 'package:get/get.dart';
import 'package:path/path.dart' as path;
import 'package:provider/provider.dart';
import 'package:star_lock/flavors.dart';
import 'package:star_lock/login/login/starLock_login_logic.dart';
import 'package:star_lock/login/register/entity/checkIP_entity.dart';
import 'package:star_lock/mine/about/debug/debug_tool.dart';
import 'package:star_lock/network/api_provider.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/network/start_chart_api.dart';
import 'package:star_lock/talk/starChart/handle/impl/debug_Info_model.dart';
import 'package:star_lock/talk/starChart/status/appLifecycle_observer.dart';
import 'package:star_lock/tools/NativeInteractionTool.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/bugly/bugly_tool.dart';
import 'package:star_lock/tools/callkit_handler.dart';
import 'package:star_lock/tools/device_info_service.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/tools/jverify_one_click_login.dart';
import 'package:star_lock/tools/platform_info_services.dart';
import 'package:star_lock/tools/push/message_management.dart';
import 'package:star_lock/tools/push/notification_service.dart';
import 'package:star_lock/tools/push/xs_jPhush.dart';
import 'package:star_lock/tools/storage.dart';
import 'package:star_lock/translations/current_locale_tool.dart';
import 'package:star_lock/translations/trans_lib.dart';
import 'package:star_lock/tools/remote_unlock_coordinator.dart';
import 'apm/apm_helper.dart';
import 'app.dart';
import 'app_settings/app_settings.dart';
import 'tools/store_service.dart';
// 该文件不可作为编译入口,请查看 flavorizr.yaml 中的说明
FutureOr<void> main() async {
FlutterBugly.postCatchedException(() async {
WidgetsFlutterBinding.ensureInitialized();
// 创建并注册 AppLifecycleObserver(用于程序是否进入后台的监听)
AppLifecycleObserver appLifecycleObserver = AppLifecycleObserver();
WidgetsBinding.instance.addObserver(appLifecycleObserver);
// await ApmHelper.instance.initApp();
await _setCommonServices();
// 设置国际化信息
await _initTranslation();
final bool isLogin = await getLoginStatus();
if (isLogin) {
await privacySDKInitialization();
}
WidgetsBinding.instance.addPostFrameCallback((_) async {
final bool? openDeBug = await Storage.getBool(isOpenDeBug);
if (openDeBug == true) {
DeBug.showFloatWidget();
}
});
// 如果是ios则初始化获取到voip token
// 上报时判断是否属于国内用户国内用户不上报token 既不触发callkit
if (Platform.isIOS) {
CallKitHandler.setupListener();
String? token = await CallKitHandler.getVoipToken();
print('获取到的VoIP Token: $token');
}
runApp(MyApp(isLogin: isLogin));
});
if (AppPlatform.isAndroid) {
const SystemUiOverlayStyle systemUiOverlayStyle =
SystemUiOverlayStyle(statusBarColor: Colors.transparent);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
}
// checkChinese();
}
// 设置国际化信息
Future<void> _initTranslation() async => TranslationLoader.loadTranslation();
// 设置包名服务设备信息
Future<void> _setCommonServices() async {
await Get.putAsync(() => StoreService().init());
Get.put(ApiProvider());
Get.put(StartChartApi());
Get.put(ApiRepository(Get.find<ApiProvider>()));
if (F.isLite) {
//上架审核注释 获取设备信息
// await Get.putAsync(() => DeviceInfoService().init());
} else {
await Get.putAsync(() => DeviceInfoService().init());
}
}
//关于隐私协议的初始化
Future<void> privacySDKInitialization() async {
ApmHelper.instance.initSdk();
await Get.putAsync(() => PlatformInfoService().init());
await BuglyTool.init();
// 初始化JPush服务
final XSJPushProvider jpushProvider = XSJPushProvider();
await jpushProvider.initJPushService();
NotificationService().init(); // 初始化通知服务
RemoteUnlockCoordinator.init();
NativeInteractionTool().setupPushReceiver();
final Map<String, dynamic>? push =
await NativeInteractionTool().getPendingPush();
if(push != null) {
print('哈哈: $push');
if(push.isNotEmpty) {
// do something
MessageManagement.shuntingBus(push);
}
}
}