修复adjust归因失败

This commit is contained in:
root
2026-06-27 23:58:54 +08:00
parent 51a6a850b3
commit c3c58198ab
9 changed files with 439 additions and 145 deletions
+43 -3
View File
@@ -129,11 +129,12 @@ class CloakAdSourceGuard
}
/**
* @param array $enabledPlatforms PLATFORM_* 常量列表
* @param string $spmId
* @param array $enabledPlatforms PLATFORM_* 常量列表
* @param string $spmId
* @param string|array|null $fpUrls DB_FP 真实页 URL(用于 Adjust 宏检测)
* @return string query 字符串(不含前导 ?
*/
public static function buildAdLinkQuery(array $enabledPlatforms, $spmId)
public static function buildAdLinkQuery(array $enabledPlatforms, $spmId, $fpUrls = null)
{
$spmId = trim((string) $spmId);
if (empty($enabledPlatforms)) {
@@ -154,6 +155,10 @@ class CloakAdSourceGuard
}
}
if (in_array(self::PLATFORM_FB, $enabledPlatforms, true)) {
$parts = array_merge($parts, self::buildAdjustMacroQueryParts($fpUrls));
}
if ($spmId !== '') {
$parts[] = 'ad_spm_id=' . rawurlencode($spmId);
}
@@ -161,6 +166,41 @@ class CloakAdSourceGuard
return implode('&', $parts);
}
/**
* DB_FP 为 Adjust 链接时,追加 p1p6 等 Facebook 宏到广告链接
*
* @param string|array|null $fpUrls
* @return string[]
*/
private static function buildAdjustMacroQueryParts($fpUrls)
{
require_once __DIR__ . '/Cloak/AttributionUrlMerger.php';
$fpUrl = '';
if (is_array($fpUrls)) {
foreach ($fpUrls as $url) {
$url = trim((string) $url);
if ($url !== '') {
$fpUrl = $url;
break;
}
}
} else {
$fpUrl = trim((string) $fpUrls);
}
if ($fpUrl === '' || !AttributionUrlMerger::needsAttributionMerge($fpUrl)) {
return [];
}
$parts = [];
foreach (AttributionUrlMerger::parseAdjustMacroKeys($fpUrl) as $key => $macro) {
$parts[] = rawurlencode((string) $key) . '=' . $macro;
}
return $parts;
}
/**
* 生成 1012 位随机字母数字 ad_spm_id
*/