add Analytics

This commit is contained in:
xkeyC 2023-10-30 20:39:31 +08:00
parent 1d017e5ef2
commit cebe74d972
7 changed files with 53 additions and 8 deletions

17
lib/api/analytics.dart Normal file
View File

@ -0,0 +1,17 @@
import 'package:dio/dio.dart';
import 'package:starcitizen_doctor/common/conf.dart';
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
class AnalyticsApi {
static final Dio _dio = Dio();
static touch(String key) async {
dPrint("AnalyticsApi.touch === $key start");
try {
await _dio.post("${AppConf.xkeycApiUrl}/analytics/$key");
dPrint("AnalyticsApi.touch === $key over");
} catch (e) {
dPrint("AnalyticsApi.touch === $key Error:$e");
}
}
}

View File

@ -4,8 +4,10 @@ import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter_acrylic/flutter_acrylic.dart'; import 'package:flutter_acrylic/flutter_acrylic.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart'; import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/data/app_version_data.dart'; import 'package:starcitizen_doctor/data/app_version_data.dart';
import 'package:uuid/uuid.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
import '../base/ui.dart'; import '../base/ui.dart';
@ -26,6 +28,8 @@ class AppConf {
static const String webTranslateHomeUrl = static const String webTranslateHomeUrl =
"https://jihulab.com/StarCitizenCN_Community/scweb_chinese_translate/-/raw/main/json/locales"; "https://jihulab.com/StarCitizenCN_Community/scweb_chinese_translate/-/raw/main/json/locales";
static const String xkeycApiUrl = "https://sctoolbox.xkeyc.com";
static late final String applicationSupportDir; static late final String applicationSupportDir;
static AppVersionData? networkVersionData; static AppVersionData? networkVersionData;
@ -49,7 +53,11 @@ class AppConf {
dPrint("applicationSupportDir == $applicationSupportDir"); dPrint("applicationSupportDir == $applicationSupportDir");
try { try {
Hive.init("$applicationSupportDir/db"); Hive.init("$applicationSupportDir/db");
await Hive.openBox("app_conf"); final box = await Hive.openBox("app_conf");
if (box.get("install_id", defaultValue: "") == "") {
await box.put("install_id", const Uuid().v4());
AnalyticsApi.touch("firstLaunch");
}
} catch (e) { } catch (e) {
exit(1); exit(1);
} }
@ -75,6 +83,7 @@ class AppConf {
await Window.hideWindowControls(); await Window.hideWindowControls();
}); });
await _checkUpdate(); await _checkUpdate();
AnalyticsApi.touch("launch");
} }
static String getUpgradePath() { static String getUpgradePath() {

View File

@ -2,6 +2,7 @@ import 'package:extended_image/extended_image.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui.dart'; import 'package:starcitizen_doctor/base/ui.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
@ -106,7 +107,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://robertsspaceindustries.com", webURL: "https://robertsspaceindustries.com",
info: "罗伯茨航天工业公司,万物的起源", info: "罗伯茨航天工业公司,万物的起源",
useLocalization: true, useLocalization: true,
width: width), width: width,
touchKey: "webLocalization_rsi"),
const SizedBox(height: 12), const SizedBox(height: 12),
makeWebViewButton(model, makeWebViewButton(model,
icon: Row( icon: Row(
@ -123,7 +125,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://uexcorp.space", webURL: "https://uexcorp.space",
info: "采矿、精炼、贸易计算器、价格、船信息", info: "采矿、精炼、贸易计算器、价格、船信息",
useLocalization: true, useLocalization: true,
width: width), width: width,
touchKey: "webLocalization_uex"),
const SizedBox(height: 12), const SizedBox(height: 12),
makeWebViewButton(model, makeWebViewButton(model,
icon: Row( icon: Row(
@ -140,7 +143,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
webURL: "https://www.erkul.games/live/calculator", webURL: "https://www.erkul.games/live/calculator",
info: "在线改船,查询伤害数值和配件购买地点", info: "在线改船,查询伤害数值和配件购买地点",
useLocalization: true, useLocalization: true,
width: width), width: width,
touchKey: "webLocalization_dps"),
const SizedBox(height: 12), const SizedBox(height: 12),
const Text("外部浏览器拓展:"), const Text("外部浏览器拓展:"),
const SizedBox(height: 8), const SizedBox(height: 8),
@ -589,7 +593,8 @@ class HomeUI extends BaseUI<HomeUIModel> {
required String webURL, required String webURL,
required bool useLocalization, required bool useLocalization,
required double width, required double width,
String? info}) { String? info,
String? touchKey}) {
return Container( return Container(
width: width, width: width,
decoration: BoxDecoration( decoration: BoxDecoration(
@ -622,8 +627,12 @@ class HomeUI extends BaseUI<HomeUIModel> {
) )
], ],
), ),
onPressed: () => onPressed: () {
model.goWebView(webTitle, webURL, useLocalization: true)), if (touchKey != null) {
AnalyticsApi.touch(touchKey);
}
model.goWebView(webTitle, webURL, useLocalization: true);
}),
), ),
); );
} }

View File

@ -5,6 +5,7 @@ import 'dart:io';
import 'package:desktop_webview_window/desktop_webview_window.dart'; import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart'; import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/base/ui_model.dart'; import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/conf.dart'; import 'package:starcitizen_doctor/common/conf.dart';
@ -131,6 +132,7 @@ class HomeUIModel extends BaseUIModel {
lastScreenInfo = "扫描完毕,共找到 ${scInstallPaths.length} 个有效安装目录"; lastScreenInfo = "扫描完毕,共找到 ${scInstallPaths.length} 个有效安装目录";
} catch (e) { } catch (e) {
lastScreenInfo = "解析 log 文件失败!"; lastScreenInfo = "解析 log 文件失败!";
AnalyticsApi.touch("error_launchLogs");
showToast(context!, showToast(context!,
"解析 log 文件失败! \n请关闭游戏退出RSI启动器后重试若仍有问题请使用工具箱中的 RSI Launcher log 修复。"); "解析 log 文件失败! \n请关闭游戏退出RSI启动器后重试若仍有问题请使用工具箱中的 RSI Launcher log 修复。");
} }
@ -369,6 +371,7 @@ class HomeUIModel extends BaseUIModel {
showToast(context!, "该功能需要一个有效的安装位置"); showToast(context!, "该功能需要一个有效的安装位置");
return; return;
} }
AnalyticsApi.touch("performance_launch");
BaseUIContainer( BaseUIContainer(
uiCreate: () => PerformanceUI(), uiCreate: () => PerformanceUI(),
modelCreate: () => PerformanceUIModel(scInstalledPath)) modelCreate: () => PerformanceUIModel(scInstalledPath))
@ -414,7 +417,7 @@ class HomeUIModel extends BaseUIModel {
if (skip != tipVersion) { if (skip != tipVersion) {
final ok = await showConfirmDialogs( final ok = await showConfirmDialogs(
context!, context!,
"星际公民网汉化", "星际公民汉化",
const Text( const Text(
"本插功能件仅供大致浏览使用,不对任何有关本功能产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!" "本插功能件仅供大致浏览使用,不对任何有关本功能产生的问题负责!在涉及账号操作前请注意确认网站的原本内容!"
"\n\n\n使用此功能登录账号时请确保您的 星际公民盒子 是从可信任的来源下载。", "\n\n\n使用此功能登录账号时请确保您的 星际公民盒子 是从可信任的来源下载。",
@ -482,6 +485,7 @@ class HomeUIModel extends BaseUIModel {
await Process.run("powershell.exe", ["ps \"StarCitizen\" | kill"]); await Process.run("powershell.exe", ["ps \"StarCitizen\" | kill"]);
return; return;
} }
AnalyticsApi.touch("gameLaunch");
showDialog( showDialog(
context: context!, context: context!,
dismissWithEsc: false, dismissWithEsc: false,

View File

@ -4,6 +4,7 @@ import 'dart:io';
import 'package:archive/archive_io.dart'; import 'package:archive/archive_io.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart'; import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/base/ui_model.dart'; import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/conf.dart'; import 'package:starcitizen_doctor/common/conf.dart';
@ -128,6 +129,7 @@ class LocalizationUIModel extends BaseUIModel {
VoidCallback? doRemoteInstall(ScLocalizationData value) { VoidCallback? doRemoteInstall(ScLocalizationData value) {
return () async { return () async {
AnalyticsApi.touch("install_localization");
final downloadUrl = final downloadUrl =
"${AppConf.gitlabLocalizationUrl}/-/archive/${value.versionName}/LocalizationData-${value.versionName}.tar.bz2"; "${AppConf.gitlabLocalizationUrl}/-/archive/${value.versionName}/LocalizationData-${value.versionName}.tar.bz2";
final savePath = final savePath =

View File

@ -3,6 +3,7 @@ import 'dart:io';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:hive/hive.dart'; import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui_model.dart'; import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart'; import 'package:starcitizen_doctor/common/helper/log_helper.dart';
import 'package:starcitizen_doctor/data/game_performance_data.dart'; import 'package:starcitizen_doctor/data/game_performance_data.dart';
@ -94,6 +95,7 @@ class PerformanceUIModel extends BaseUIModel {
applyProfile(bool cleanShader) async { applyProfile(bool cleanShader) async {
if (performanceMap == null) return; if (performanceMap == null) return;
AnalyticsApi.touch("performance_apply");
workingString = "生成配置文件"; workingString = "生成配置文件";
notifyListeners(); notifyListeners();
String conf = ""; String conf = "";

View File

@ -1,5 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/base/ui_model.dart'; import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/global_ui_model.dart'; import 'package:starcitizen_doctor/global_ui_model.dart';
import 'package:starcitizen_doctor/ui/about/about_ui_model.dart'; import 'package:starcitizen_doctor/ui/about/about_ui_model.dart';
@ -58,6 +59,7 @@ class IndexUIModel extends BaseUIModel {
await showToast(context!, "运行环境出错,请检查系统环境变量 PATH"); await showToast(context!, "运行环境出错,请检查系统环境变量 PATH");
await launchUrlString( await launchUrlString(
"https://answers.microsoft.com/zh-hans/windows/forum/all/%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98/b88369e6-2620-4a77-b07a-d0af50894a07"); "https://answers.microsoft.com/zh-hans/windows/forum/all/%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%E5%8F%98/b88369e6-2620-4a77-b07a-d0af50894a07");
await AnalyticsApi.touch("error_powershell");
exit(0); exit(0);
} }