|
|
@@ -4,8 +4,9 @@ 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 '../../data/api/response/member_status_response.dart';
|
|
|
-import '../../data/bean/member_status_info.dart';
|
|
|
import '../../data/consts/build_config.dart';
|
|
|
import '../../data/consts/payment_type.dart';
|
|
|
import '../../device/atmob_platform_info.dart';
|
|
|
@@ -15,24 +16,36 @@ import '../../utils/mmkv_util.dart';
|
|
|
typedef GravitySuccessCallback = void Function();
|
|
|
|
|
|
class GravityHelper {
|
|
|
- static const String _keyCurrentSsid = "current_ssid";
|
|
|
+ static const String tag = 'GravityHelper';
|
|
|
+ static const String _keyCurrentDeviceId = "current_device_id";
|
|
|
static CancelableFuture<bool>? _initFuture;
|
|
|
static String? _currentClientId;
|
|
|
|
|
|
static bool? _isFromPromote;
|
|
|
|
|
|
- static init() async {
|
|
|
+ static init() {
|
|
|
_initialize(false);
|
|
|
+ _uploadClientId();
|
|
|
}
|
|
|
|
|
|
- static _initialize(bool refreshSSID,
|
|
|
+ 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 {
|
|
|
- if (_initFuture != null) {
|
|
|
- _initFuture?.cancel();
|
|
|
- }
|
|
|
+ _initFuture?.cancel();
|
|
|
_initFuture = AsyncUtil.retryWithExponentialBackoff<bool>(() async {
|
|
|
- String ssid = await _getSSID(refreshSSID);
|
|
|
- CancelableFuture<bool> initFuture = _gravityInitialize(ssid);
|
|
|
+ String deviceId = await _getDeviceId(refreshDeviceId);
|
|
|
+ CancelableFuture<bool> initFuture = _gravityInitialize(deviceId);
|
|
|
_initFuture = initFuture;
|
|
|
return await initFuture;
|
|
|
}, 5);
|
|
|
@@ -40,43 +53,44 @@ class GravityHelper {
|
|
|
_isFromPromote = isPromote;
|
|
|
callback?.call();
|
|
|
}).catchError((error) {
|
|
|
- _initialize(refreshSSID, callback: callback);
|
|
|
+ _initialize(refreshDeviceId, callback: callback);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- static Future<String> _getSSID(bool refreshSSID) async {
|
|
|
- String? currentSSID = _getCurrentSSID();
|
|
|
- if (currentSSID == null || refreshSSID) {
|
|
|
+ //目前返回deviceId
|
|
|
+ static Future<String> _getDeviceId(bool refreshDeviceId) async {
|
|
|
+ String? currentDeviceId = _getCurrentDeviceId();
|
|
|
+ if (currentDeviceId == null || refreshDeviceId) {
|
|
|
MemberStatusResponse response =
|
|
|
await AccountRepository.getInstance().getMemberStatus();
|
|
|
- KVUtil.putString(_keyCurrentSsid, response.deviceId);
|
|
|
+ KVUtil.putString(_keyCurrentDeviceId, response.deviceId);
|
|
|
return response.deviceId;
|
|
|
}
|
|
|
- return currentSSID;
|
|
|
+ return currentDeviceId;
|
|
|
}
|
|
|
|
|
|
- static String? _getCurrentSSID() {
|
|
|
- return KVUtil.getString(_keyCurrentSsid, null);
|
|
|
+ static String? _getCurrentDeviceId() {
|
|
|
+ return KVUtil.getString(_keyCurrentDeviceId, null);
|
|
|
}
|
|
|
|
|
|
- static CancelableFuture<bool> _gravityInitialize(String ssid) {
|
|
|
+ static CancelableFuture<bool> _gravityInitialize(String deviceId) {
|
|
|
return AsyncUtil.retryWithExponentialBackoff<bool>(() {
|
|
|
return GravityEngine.initialize(
|
|
|
GravityConfig.gravityAppId,
|
|
|
GravityConfig.gravityAccessToken,
|
|
|
- ssid,
|
|
|
+ deviceId,
|
|
|
atmobPlatformInfo.channelName ?? '',
|
|
|
BuildConfig.isDebug)
|
|
|
.then((data) {
|
|
|
- debugPrint('gravity initialize($ssid) success');
|
|
|
- GravityHelper._currentClientId = ssid;
|
|
|
+ debugPrint('gravity initialize($deviceId) success');
|
|
|
+ GravityHelper._currentClientId = deviceId;
|
|
|
return data;
|
|
|
});
|
|
|
}, 5);
|
|
|
}
|
|
|
|
|
|
static void onLogin() {
|
|
|
- _clearCurrentSSID();
|
|
|
+ _clearCurrentDeviceId();
|
|
|
_initialize(true, callback: () {
|
|
|
if (_currentClientId != null) {
|
|
|
GravityEngine.login(_currentClientId!);
|
|
|
@@ -90,8 +104,8 @@ class GravityHelper {
|
|
|
_initialize(false, callback: null);
|
|
|
}
|
|
|
|
|
|
- static void _clearCurrentSSID() {
|
|
|
- KVUtil.putString(_keyCurrentSsid, null);
|
|
|
+ static void _clearCurrentDeviceId() {
|
|
|
+ KVUtil.putString(_keyCurrentDeviceId, null);
|
|
|
}
|
|
|
|
|
|
static bool? getIsFromPromote() {
|