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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user