import 'dart:io'; import 'package:electronic_assistant/utils/android_device_info.dart'; import 'package:electronic_assistant/utils/app_info_util.dart'; import 'package:electronic_assistant/utils/mmkv_util.dart'; import 'package:flutter/cupertino.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:uuid/uuid.dart'; part 'base_request.g.dart'; @JsonSerializable() class BaseRequest { /// 平台类型: 1-Android 2-iOS 3-移动H5 4-PC_WEB 5-微信小程序 6-微信小游戏 /// 7-微信公众号 8-抖音小程序 9-抖音小游戏 10-鸿蒙APP @JsonKey(name: "appPlatform") late int appPlatform = 0; /// 操作系统:android、ios、mac、windows、linux、harmony @JsonKey(name: "os") late String os = "unknown"; @JsonKey(name: "osVersion") late String osVersion; /// 包信息 @JsonKey(name: "packageName") String? packageName; @JsonKey(name: "appVersionName") String? appVersionName; @JsonKey(name: "appVersionCode") int? appVersionCode; /// 渠道信息, iOS没有渠道信息, Android通过渠道包工具获取 @JsonKey(name: "channelName") String? channelName; /// 设备信息 /// Android特有 @JsonKey(name: "oaid") String? oaid; @JsonKey(name: "aaid") String? aaid; @JsonKey(name: "androidId") String? androidId; @JsonKey(name: "imei") String? imei; @JsonKey(name: "simImei0") String? simImei0; @JsonKey(name: "simImei1") String? simImei1; /// iOS特有 @JsonKey(name: "idfa") String? idfa; @JsonKey(name: "idfv") String? idfv; /// 公共设备信息 @JsonKey(name: "machineId") String? machineId; @JsonKey(name: "brand") String? brand; @JsonKey(name: "model") String? model; @JsonKey(name: "mac") String? mac; @JsonKey(name: "wifiName") String? wifiName; /// 地理位置信息 @JsonKey(name: "region") String? region; @JsonKey(name: "locLng") double? locLng; @JsonKey(name: "locLat") double? locLat; BaseRequest() { initPlatformOS(); initPackageInfo(); initChannelInfo(); initDeviceInfo(); } Map toJson() => _$BaseRequestToJson(this); void initPlatformOS() { if (Platform.isAndroid) { appPlatform = 1; os = "android"; } else if (Platform.isIOS) { appPlatform = 2; os = "ios"; } else if (Platform.isMacOS) { os = "mac"; } else if (Platform.isWindows) { os = "windows"; } else if (Platform.isLinux) { os = "linux"; } else if (Platform.isFuchsia) { os = "fuchsia"; } osVersion = Platform.operatingSystemVersion; debugPrint("os: $os, osVersion: $osVersion"); } void initPackageInfo() { packageName = appInfoUtil.packageName; appVersionName = appInfoUtil.appVersionName; appVersionCode = appInfoUtil.appVersionCode; } void initChannelInfo() { channelName = ""; } void initDeviceInfo() { if (Platform.isAndroid) { androidId = androidDeviceInfo.androidId; } else if (Platform.isIOS) {} } }