|
|
@@ -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 = {
|