| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import Flutter
- import Foundation
- @available(iOS 13.0, *)
- public class MobileUseStatisticsPlugin: NSObject, FlutterPlugin {
-
- public static func register(with registrar: FlutterPluginRegistrar) {
- let channel = FlutterMethodChannel(
- name: "mobile_use_statistics",
- binaryMessenger: registrar.messenger()
- )
- let instance = MobileUseStatisticsPlugin()
- registrar.addMethodCallDelegate(instance, channel: channel)
- }
-
- public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- switch call.method {
- case "getLockScreenStatistics":
- handleGetLockScreenStatistics(call: call, result: result)
-
- case "hasUseStatisticsPermission":
- result(true)
-
- case "requestUseStatisticsPermission":
- result(nil)
-
- case "appLaunchAnActivationPermission":
- BackgroundTaskManager.shared.registerBackgroundTask()
- ScreenLockMonitor.shared.startMonitoringInBackground()
- result(nil)
-
- case "appEntersTheBackenPermission":
- BackgroundTaskManager.shared.scheduleBackgroundTask()
- result(nil)
-
- default:
- result(FlutterMethodNotImplemented)
- }
- }
-
- private func handleGetLockScreenStatistics(call: FlutterMethodCall, result: @escaping FlutterResult) {
- do {
- guard let args = call.arguments as? [String: Any],
- let startTime = args["startTime"] as? Int,
- let endTime = args["endTime"] as? Int else {
- throw FlutterError(code: "INVALID_ARGUMENTS",
- message: "Required parameters: startTime(Int), endTime(Int)",
- details: nil) as! any Error
- }
-
- // 时间戳转换(秒级→Date)
- let startDate = Date(timeIntervalSince1970: TimeInterval(startTime))
- let endDate = Date(timeIntervalSince1970: TimeInterval(endTime))
-
- print("查询时间范围: \(startDate) - \(endDate)")
-
- // 获取事件对
- let eventPairs = EventQueryService.shared.getEventPairsBetween(
- startDate: startDate,
- endDate: endDate
- )
-
- // 转换为Flutter可接收的格式
- let response = eventPairs.map { pair in
- return [
- "startTime": Int((pair["startTime"]! as AnyObject).timeIntervalSince1970),
- "endTime": Int((pair["endTime"]! as AnyObject).timeIntervalSince1970)
- ]
- }
- print("responsesfsdfs--A-\(response)")
- result(response)
-
- } catch let error as FlutterError {
- result(error)
- } catch {
- result(FlutterError(code: "UNKNOWN_ERROR",
- message: error.localizedDescription,
- details: nil))
- }
- }
- }
- extension Date {
- /// Flutter时间戳(秒级)
- var flutterTimestamp: Int {
- return Int(timeIntervalSince1970)
- }
-
- /// 从Flutter时间戳初始化
- static func fromFlutterTimestamp(_ timestamp: Int) -> Date {
- return Date(timeIntervalSince1970: TimeInterval(timestamp))
- }
- }
|