petsHero-AI/lib/main.dart

76 lines
2.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}');
}
}