| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import 'dart:async';
- import 'package:flutter/widgets.dart';
- import 'package:gravity_engine/gravity_engine.dart';
- import 'package:gravity_engine/gravity_engine_method_channel.dart';
- import 'package:location/data/repositories/account_repository.dart';
- import 'package:location/data/repositories/config_repository.dart';
- import 'package:location/utils/atmob_log.dart';
- import 'package:location/utils/toast_util.dart';
- import '../../data/api/response/member_status_response.dart';
- import '../../data/consts/app_config.dart';
- import '../../data/consts/payment_type.dart';
- import '../../device/atmob_platform_info.dart';
- import '../../utils/async_util.dart';
- import '../../utils/mmkv_util.dart';
- typedef GravitySuccessCallback = void Function();
- class GravityHelper {
- static const String tag = 'GravityHelper';
- static const String _keyCurrentDeviceId = "current_device_id";
- static const bool _isShowToast = false;
- static String? _currentClientId;
- static bool? _isFromPromote;
- static bool isInit = false;
- static init() {
- if (isInit) {
- return;
- }
- isInit = true;
- _initialize(false);
- _uploadClientId();
- }
- static _uploadClientId() {
- AsyncUtil.retryWithExponentialBackoff<void>(() async {
- String deviceId = await _getDeviceId(false);
- ConfigRepository.getInstance().uploadClientId(deviceId);
- }, 5)
- .then((_) {
- AtmobLog.d(tag, 'gravity uploadClientId success');
- }).catchError((error) {
- AtmobLog.d(tag, 'gravity uploadClientId error:$error');
- });
- }
- static _initialize(bool refreshDeviceId,
- {GravitySuccessCallback? callback}) async {
- AsyncUtil.retryWithExponentialBackoff<bool>(() async {
- String deviceId = await _getDeviceId(refreshDeviceId);
- CancelableFuture<bool> initFuture = _gravityInitialize(deviceId);
- return await initFuture;
- }, 5)
- .then((isPromote) {
- _isFromPromote = isPromote;
- callback?.call();
- }).catchError((error) {
- if (error is CancelledError) {
- return;
- }
- _initialize(refreshDeviceId, callback: callback);
- });
- }
- //目前返回deviceId
- static Future<String> _getDeviceId(bool refreshDeviceId) async {
- String? currentDeviceId = _getCurrentDeviceId();
- if (currentDeviceId == null || refreshDeviceId) {
- MemberStatusResponse response =
- await AccountRepository.getInstance().getMemberStatus();
- KVUtil.putString(_keyCurrentDeviceId, response.deviceId);
- return response.deviceId;
- }
- return currentDeviceId;
- }
- static String? _getCurrentDeviceId() {
- return KVUtil.getString(_keyCurrentDeviceId, null);
- }
- static CancelableFuture<bool> _gravityInitialize(String deviceId) {
- return AsyncUtil.retryWithExponentialBackoff<bool>(() {
- return GravityEngine.initialize(
- GravityConfig.gravityAppId,
- GravityConfig.gravityAccessToken,
- deviceId,
- atmobPlatformInfo.channelName ?? '',
- BuildConfig.isDebug)
- .then((data) {
- _toast('gravity initialize success clientId:$deviceId');
- debugPrint('gravity initialize success clientId:$deviceId');
- GravityHelper._currentClientId = deviceId;
- return data;
- });
- }, 5);
- }
- static void _toast(String msg) {
- if (_isShowToast) {
- ToastUtil.show(msg);
- }
- }
- static void onLogin() {}
- static void onLogout() async {}
- static void _clearCurrentDeviceId() {
- KVUtil.putString(_keyCurrentDeviceId, null);
- }
- static bool? getIsFromPromote() {
- return _isFromPromote;
- }
- static void report(String eventId, {Map<String, dynamic>? params}) {
- GravityEngine.trackEvent(eventId, eventProperties: params);
- }
- static void reportPay(
- int payAmount, String orderNo, String productName, int payWay) {
- PayType payType;
- if (payWay == PayMethod.alipay) {
- payType = PayType.alipay;
- } else if (payWay == PayMethod.wechat) {
- payType = PayType.wechat;
- } else if (payWay == PayMethod.apple) {
- payType = PayType.apple;
- } else {
- payType = PayType.unknown;
- }
- GravityEngine.trackPay(
- orderNo, productName, payAmount, Currency.cny, payType);
- }
- }
|