Browse Source

[new]asa 归因结果增加本地记录

zk 2 months ago
parent
commit
2840267d54
1 changed files with 21 additions and 0 deletions
  1. 21 0
      lib/sdk/asa/asa_helper.dart

+ 21 - 0
lib/sdk/asa/asa_helper.dart

@@ -1,9 +1,11 @@
 import 'dart:convert';
+import 'dart:io';
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter_asa_attribution/flutter_asa_attribution.dart';
 import 'package:http/http.dart' as http;
 import 'package:location/utils/date_util.dart';
+import 'package:location/utils/mmkv_util.dart';
 import '../../device/atmob_platform_info.dart';
 import '../../utils/hash_utils.dart';
 
@@ -14,21 +16,40 @@ class AsaHelper {
   static final String _secret = "86728a25f9e806dc05bca13e6bffc16d";
   static final String _sign = HashUtils.md5String("$_secret&kiwi");
   static Map<String, dynamic>? attributionMap;
+  static final _keyLocalAttributionMap = "local_attribution_map";
 
   static Future<String?> getToken() {
     return FlutterAsaAttribution.instance.attributionToken();
   }
 
   static Future<Map<String, dynamic>?> requestAttributionDetails() async {
+    if (!Platform.isIOS) {
+      return null;
+    }
     if (attributionMap != null) {
       return attributionMap;
     }
+    final String? local = KVUtil.getString(_keyLocalAttributionMap, null);
+    if (local?.isNotEmpty == true) {
+      try {
+        attributionMap = jsonDecode(local!);
+        return attributionMap;
+      } catch (e) {
+        debugPrint("asa 本地数据解析失败 $e");
+      }
+    }
     attributionMap =
         await FlutterAsaAttribution.instance.requestAttributionDetails();
+    if (attributionMap != null) {
+      KVUtil.putString(_keyLocalAttributionMap, jsonEncode(attributionMap));
+    }
     return attributionMap;
   }
 
   static Future<bool> reportEvent(AsaEvent event, {double? amount}) async {
+    if (!Platform.isIOS) {
+      return false;
+    }
     final attrMap = await requestAttributionDetails();
 
     final Map<String, dynamic> map = {