asa_helper.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 Future<Map<String, dynamic>?> requestAttributionDetails() async {
  18. if (attributionMap != null) {
  19. return attributionMap;
  20. }
  21. attributionMap =
  22. await FlutterAsaAttribution.instance.requestAttributionDetails();
  23. return attributionMap;
  24. }
  25. static Future<bool> reportEvent(AsaEvent event, {double? amount}) async {
  26. final attrMap = await requestAttributionDetails();
  27. final Map<String, dynamic> map = {
  28. "campaign_id": attrMap?["campaignId"] ?? "",
  29. "ad_group_id": attrMap?["adGroupId"] ?? "",
  30. "keyword_id": attrMap?["keywordId"] ?? "",
  31. "date": DateUtil.formatDateTime(DateUtil.getNow(), "yyyy-MM-dd"),
  32. "unique_device": atmobPlatformInfo.idfa ?? atmobPlatformInfo.idfv,
  33. "timezone": 'ORTZ',
  34. "event_name": event.value,
  35. };
  36. if (amount == null) {
  37. map.addAll({"event_val": 1});
  38. } else {
  39. map.addAll({"event_val": amount});
  40. }
  41. return reportBackendDataDetail(map);
  42. }
  43. static Future<bool> reportBackendDataDetail(
  44. Map<String, dynamic> params) async {
  45. try {
  46. final String url = _getReportDetailApi();
  47. final headers = {
  48. "Content-Type": "application/json",
  49. };
  50. final requestBody = {"backend_data_detail": params};
  51. final resp = await http.post(
  52. Uri.parse(url),
  53. headers: headers,
  54. body: jsonEncode(requestBody),
  55. );
  56. if (resp.statusCode == 200) {
  57. final resMap = jsonDecode(resp.body);
  58. debugPrint("asa 上报结果: $resMap");
  59. return true;
  60. } else {
  61. debugPrint("asa 上报错误: ${resp.statusCode} ${resp.body}");
  62. return false;
  63. }
  64. } catch (e) {
  65. return false;
  66. }
  67. }
  68. static String _getReportDetailApi() {
  69. return 'http://asafrontend.mokiwi.com/api/asabackendDataDetail/add?org_id=$_orgId&sign=$_sign&debug=$kDebugMode';
  70. }
  71. }
  72. enum AsaEvent {
  73. active("active"), //激活
  74. register("register"), //注册
  75. pay("pay"); //付费
  76. const AsaEvent(this.value);
  77. final String value;
  78. }