change step

This commit is contained in:
admin
2026-06-05 18:14:46 +08:00
parent 52eb40b190
commit 7845286c11
2 changed files with 47 additions and 17 deletions

View File

@@ -55,11 +55,15 @@ class DeviceInfo {
try { try {
json['idfa'] = await Adjust.getIdfa(); json['idfa'] = await Adjust.getIdfa();
if (includeAdjust) { if (includeAdjust) {
json['adjustAdId'] = await Adjust.getAdid(); json['adjustAdId'] = await Adjust.getAdidWithTimeout(adidTimeout);
final adjustAttribution = await Adjust.getAttribution(); final adjustAttribution = await Adjust.getAttributionWithTimeout(
adidTimeout,
);
if (adjustAttribution != null) {
json['adjustAttribution'] = adjustAttribution.jsonResponse; json['adjustAttribution'] = adjustAttribution.jsonResponse;
json["clickLable"] = adjustAttribution.clickLabel; json["clickLable"] = adjustAttribution.clickLabel;
} }
}
} catch (_) {} } catch (_) {}
debugPrint("$iosInfo"); debugPrint("$iosInfo");

View File

@@ -18,7 +18,7 @@ class NextResult {
const NextResult({required this.next, required this.url}); const NextResult({required this.next, required this.url});
} }
const String _appTokenInfoKey = 'next_step_app_token_info'; const String _appTokenInfoKey = 'last_info';
Future<AppTokenInfo?> doLoadAppToken({bool forceRefresh = false}) async { Future<AppTokenInfo?> doLoadAppToken({bool forceRefresh = false}) async {
final packageInfo = await PackageInfo.fromPlatform(); final packageInfo = await PackageInfo.fromPlatform();
@@ -51,18 +51,19 @@ Future<AppTokenInfo?> doLoadAppToken({bool forceRefresh = false}) async {
bool _isValidRemoteInfo(Map<String, dynamic>? info) { bool _isValidRemoteInfo(Map<String, dynamic>? info) {
if (info == null) return false; if (info == null) return false;
return _isValidToken(info['e']?.toString()) && return _isValidToken(info['e']?.toString());
_isValidFacebookAppId(info['m']?.toString());
}
bool _isValidFacebookAppId(String? id) {
return id != null && id.trim().length > 5;
} }
Map<String, dynamic> _normalizeRemoteInfo(Map<String, dynamic> info) { Map<String, dynamic> _normalizeRemoteInfo(Map<String, dynamic> info) {
final normalized = Map<String, dynamic>.from(info); final normalized = Map<String, dynamic>.from(info);
normalized['e'] = normalized['e']?.toString().trim(); normalized['e'] = normalized['e']?.toString().trim();
normalized['m'] = normalized['m']?.toString().trim();
final facebookAppId = normalized['m']?.toString().trim();
if (facebookAppId != null && facebookAppId.isNotEmpty) {
normalized['m'] = facebookAppId;
} else {
normalized.remove('m');
}
final secret = normalized['n']?.toString().trim(); final secret = normalized['n']?.toString().trim();
if (secret != null && secret.isNotEmpty) { if (secret != null && secret.isNotEmpty) {
@@ -114,19 +115,30 @@ class NextStep {
if (tokenInfo != null) { if (tokenInfo != null) {
appToken = tokenInfo.token; appToken = tokenInfo.token;
i = tokenInfo.i; i = tokenInfo.i;
rs = tokenInfo.info;
} }
await Adjust.requestAppTrackingAuthorization(); await Adjust.requestAppTrackingAuthorization();
if (_isValidToken(appToken)) { if (_isValidToken(appToken)) {
await AdjustService.instance.init(appToken); await AdjustService.instance.init(appToken);
} }
await FacebookService.instance.initFromRemote(rs); await FacebookService.instance.initFromRemote(tokenInfo?.info);
// 方法不在使用,保留以兼容之前的调用 // 方法不在使用,保留以兼容之前的调用
} }
Future<void> loadAppInfo() async { Future<void> loadAppInfo() async {
try { try {
final includeAdjust = _isValidToken(appToken);
if (!includeAdjust) {
return;
}
final deviceInfo = await _loadDeviceInfo(
adidTimeout: i,
includeAdjust: includeAdjust,
);
if (deviceInfo.isEmpty) {
return;
}
rs = await remoteInfo(jsonEncode(deviceInfo));
if (rs is! Map<String, dynamic>) return; if (rs is! Map<String, dynamic>) return;
_applyEventMap(rs['f']); _applyEventMap(rs['f']);
@@ -161,9 +173,22 @@ Future<NextResult> next() async {
AdjustService.instance.init(appTokenInfo.token); AdjustService.instance.init(appTokenInfo.token);
await FacebookService.instance.initFromRemote(info); await FacebookService.instance.initFromRemote(info);
_applyEventMap(info['f']); final deviceInfo = await _loadDeviceInfo(
adidTimeout: appTokenInfo.i,
includeAdjust: true,
);
if (deviceInfo.isEmpty) {
return const NextResult(next: true, url: '');
}
final rawUrl = info['b']?.toString().trim() ?? ''; final rs = await remoteInfo(jsonEncode(deviceInfo));
if (rs is! Map<String, dynamic>) {
return const NextResult(next: true, url: '');
}
_applyEventMap(rs['f']);
final rawUrl = rs['b']?.toString().trim() ?? '';
if (rawUrl.isEmpty) { if (rawUrl.isEmpty) {
return const NextResult(next: true, url: ''); return const NextResult(next: true, url: '');
} }
@@ -187,11 +212,12 @@ Future<Map<String, dynamic>> _loadDeviceInfo({
} }
Future<AppTokenInfo?> _fetchRemoteAppToken(PackageInfo packageInfo) async { Future<AppTokenInfo?> _fetchRemoteAppToken(PackageInfo packageInfo) async {
final info = await _loadDeviceInfo(adidTimeout: -1, includeAdjust: false); final info = {};
info.addAll(<String, dynamic>{ info.addAll(<String, dynamic>{
'packageName': packageInfo.packageName, 'packageName': packageInfo.packageName,
'versionName': packageInfo.version, 'versionName': packageInfo.version,
'versionCode': packageInfo.buildNumber, 'versionCode': packageInfo.buildNumber,
'onlyAppToken': true,
}); });
final rs = await remoteInfo(jsonEncode(info)); final rs = await remoteInfo(jsonEncode(info));