asa_helper.dart 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import 'dart:convert';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter_asa_attribution/flutter_asa_attribution.dart';
  4. import 'package:http/http.dart' as http;
  5. import 'package:location/utils/date_util.dart';
  6. import '../../device/atmob_platform_info.dart';
  7. import '../../utils/hash_utils.dart';
  8. class AsaHelper {
  9. AsaHelper._();
  10. static final String _orgId = "9038030";
  11. static final String _secret = "86728a25f9e806dc05bca13e6bffc16d";
  12. static final String _sign = HashUtils.md5String("$_secret&kiwi");
  13. static Map<String, dynamic>? attributionMap;
  14. static Future<String?> getToken() {
  15. return FlutterAsaAttribution.instance.attributionToken();
  16. }
  17. static void init() {
  18. requestAttributionDetails();
  19. }
  20. static Future<Map<String, dynamic>?> requestAttributionDetails() async {
  21. if (attributionMap != null) {
  22. return attributionMap;
  23. }
  24. attributionMap =
  25. await FlutterAsaAttribution.instance.requestAttributionDetails();
  26. return attributionMap;
  27. }
  28. static Future<bool> reportEvent(AsaEvent event, {double? amount}) async {
  29. final attrMap = await requestAttributionDetails();
  30. final Map<String, dynamic> map = {
  31. "campaign_id": attrMap?["campaignId"] ?? "",
  32. "ad_group_id": attrMap?["adGroupId"] ?? "",
  33. "keyword_id": attrMap?["keywordId"] ?? "",
  34. "date": DateUtil.formatDateTime(DateUtil.getNow(), "yyyy-MM-dd"),
  35. "unique_device": atmobPlatformInfo.idfa ?? atmobPlatformInfo.idfv,
  36. "timezone": 'ORTZ',
  37. "event_name": event.value,
  38. };
  39. if (amount == null) {
  40. map.addAll({"event_val": 1});
  41. } else {
  42. map.addAll({"event_val": amount});
  43. }
  44. return reportBackendDataDetail(map);
  45. }
  46. static Future<bool> reportBackendDataDetail(
  47. Map<String, dynamic> params) async {
  48. try {
  49. final String url = _getReportDetailApi();
  50. final headers = {
  51. "Content-Type": "application/json",
  52. };
  53. final requestBody = {"backend_data_detail": params};
  54. final resp = await http.post(
  55. Uri.parse(url),
  56. headers: headers,
  57. body: jsonEncode(requestBody),
  58. );
  59. if (resp.statusCode == 200) {
  60. final resMap = jsonDecode(resp.body);
  61. debugPrint("asa 上报结果: $resMap");
  62. return true;
  63. } else {
  64. debugPrint("asa 上报错误: ${resp.statusCode} ${resp.body}");
  65. return false;
  66. }
  67. } catch (e) {
  68. return false;
  69. }
  70. }
  71. static String _getReportDetailApi() {
  72. return 'http://asafrontend.mokiwi.com/api/asabackendDataDetail/add?org_id=$_orgId&sign=$_sign&debug=$kDebugMode';
  73. }
  74. }
  75. enum AsaEvent {
  76. active("active"), //激活
  77. register("register"), //注册
  78. pay("pay"); //付费
  79. const AsaEvent(this.value);
  80. final String value;
  81. }