fix: patch ShellConfigEndpoint + ShellWebsiteURL in Info.plist

Root cause: Info.plist contains ShellConfigEndpoint that overrides
the runtime-constructed config URL. Without patching this, the app
still requests shenma.my/api/ios-shell/config.

Fix: patch ShellConfigEndpoint to https://<domain>/api/ap/config?a=<channelId>
and ShellWebsiteURL to the channel's h5_url if set.
This commit is contained in:
hashbro
2026-10-06 07:46:19 +08:00
parent aad2155ca5
commit e8454a93a8
+19 -2
View File
@@ -79,7 +79,7 @@ class AppPackageService
}
// 2. Patch Info.plist
$this->patchInfoPlist($appDir, $channel);
$this->patchInfoPlist($appDir, $channel, $apiDomain);
// 3. Generate icons from logo
if ($logoPath && file_exists($logoPath)) {
@@ -134,7 +134,7 @@ class AppPackageService
}
}
private function patchInfoPlist(string $appDir, Channel $channel): void
private function patchInfoPlist(string $appDir, Channel $channel, string $apiDomain): void
{
$plistPath = $appDir.'/Info.plist';
$xml = file_get_contents($plistPath);
@@ -162,6 +162,23 @@ class AppPackageService
$xml,
);
// Replace ShellConfigEndpoint (config API URL)
$configEndpoint = 'https://'.$apiDomain.'/api/ap/config?a='.$channel->channel_id;
$xml = preg_replace(
'#<key>ShellConfigEndpoint</key>\s*<string>[^<]*</string>#',
'<key>ShellConfigEndpoint</key><string>'.htmlspecialchars($configEndpoint).'</string>',
$xml,
);
// Replace ShellWebsiteURL (fallback WebView URL)
if ($channel->h5_url) {
$xml = preg_replace(
'#<key>ShellWebsiteURL</key>\s*<string>[^<]*</string>#',
'<key>ShellWebsiteURL</key><string>'.htmlspecialchars($channel->h5_url).'</string>',
$xml,
);
}
file_put_contents($plistPath, $xml);
}