76 lines
2.9 KiB
Dart
76 lines
2.9 KiB
Dart
import 'package:adjust_sdk/adjust_attribution.dart';
|
||
import 'package:adjust_sdk/adjust_config.dart';
|
||
import 'package:adjust_sdk/adjust.dart';
|
||
import 'package:flutter/foundation.dart';
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter/services.dart';
|
||
|
||
import 'app.dart';
|
||
import 'core/api/api_config.dart';
|
||
import 'core/auth/auth_service.dart';
|
||
import 'core/log/app_logger.dart';
|
||
import 'core/referrer/referrer_service.dart';
|
||
import 'core/theme/app_colors.dart';
|
||
import 'features/recharge/google_play_purchase_service.dart';
|
||
|
||
void main() async {
|
||
WidgetsFlutterBinding.ensureInitialized();
|
||
_initAdjust();
|
||
// Facebook:安装/启动由 App 内生命周期手动 activateApp(见 app.dart),关闭 AutoLog 后依赖此项
|
||
// 等待 Adjust 归因(ReferrerService 会调用 Adjust.getAttributionWithTimeout)
|
||
await ReferrerService.init();
|
||
SystemChrome.setSystemUIOverlayStyle(
|
||
const SystemUiOverlayStyle(
|
||
statusBarColor: AppColors.surface,
|
||
statusBarIconBrightness: Brightness.dark,
|
||
statusBarBrightness: Brightness.light,
|
||
),
|
||
);
|
||
// Adjust 初始化后执行登录,确保登录时归因数据已就绪
|
||
AuthService.init();
|
||
runApp(const App());
|
||
// 尽早订阅 purchaseStream,否则未确认订单不会出现在 queryPastPurchases 中,补单会为空
|
||
if (defaultTargetPlatform == TargetPlatform.android) {
|
||
GooglePlayPurchaseService.startPendingPurchaseListener();
|
||
}
|
||
// 登录完成后执行谷歌支付补单(未核销订单上报服务端并 completePurchase)
|
||
AuthService.loginComplete
|
||
.then((_) => GooglePlayPurchaseService.runOrderRecovery());
|
||
}
|
||
|
||
void _initAdjust() {
|
||
const appToken = '2z2mly0afgqo';
|
||
final config = AdjustConfig(
|
||
appToken,
|
||
kDebugMode ? AdjustEnvironment.sandbox : AdjustEnvironment.production,
|
||
);
|
||
if (kDebugMode || ApiConfig.debugLogs) {
|
||
config.logLevel = AdjustLogLevel.verbose;
|
||
}
|
||
config.attributionCallback = _onAdjustAttribution;
|
||
Adjust.initSdk(config);
|
||
}
|
||
|
||
final _adjustLog = AppLogger('Adjust');
|
||
|
||
void _onAdjustAttribution(AdjustAttribution attribution) {
|
||
// 注入 ReferrerService,与 getAttributionWithTimeout 竞速,首次安装时归因多由此回调返回
|
||
ReferrerService.receiveAttributionFromCallback(attribution);
|
||
_adjustLog.d('归因信息: '
|
||
'trackerToken=${attribution.trackerToken}, '
|
||
'trackerName=${attribution.trackerName}, '
|
||
'network=${attribution.network}, '
|
||
'campaign=${attribution.campaign}, '
|
||
'adgroup=${attribution.adgroup}, '
|
||
'creative=${attribution.creative}, '
|
||
'clickLabel=${attribution.clickLabel}, '
|
||
'costType=${attribution.costType}, '
|
||
'costAmount=${attribution.costAmount}, '
|
||
'costCurrency=${attribution.costCurrency}, '
|
||
'fbInstallReferrer=${attribution.fbInstallReferrer}');
|
||
if (attribution.jsonResponse != null &&
|
||
attribution.jsonResponse!.isNotEmpty) {
|
||
_adjustLog.d('归因 jsonResponse: ${attribution.jsonResponse}');
|
||
}
|
||
}
|