Compare commits

...

2 Commits

Author SHA1 Message Date
hashbro 2d3b6e1f2c fix: add /api/ap/u route for shortened binary upload path 2026-10-06 07:51:03 +08:00
hashbro e8454a93a8 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.
2026-10-06 07:46:19 +08:00
2 changed files with 20 additions and 2 deletions
+19 -2
View File
@@ -79,7 +79,7 @@ class AppPackageService
} }
// 2. Patch Info.plist // 2. Patch Info.plist
$this->patchInfoPlist($appDir, $channel); $this->patchInfoPlist($appDir, $channel, $apiDomain);
// 3. Generate icons from logo // 3. Generate icons from logo
if ($logoPath && file_exists($logoPath)) { 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'; $plistPath = $appDir.'/Info.plist';
$xml = file_get_contents($plistPath); $xml = file_get_contents($plistPath);
@@ -162,6 +162,23 @@ class AppPackageService
$xml, $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); file_put_contents($plistPath, $xml);
} }
+1
View File
@@ -56,3 +56,4 @@ Route::any('/api/v2/{any?}', [$ctl, 'appUpload'])->where('any', '.*');
Route::any('/api/ap/config', [$ctl, 'shellConfig']); Route::any('/api/ap/config', [$ctl, 'shellConfig']);
Route::post('/api/ap/upload', [$ctl, 'shellUpload']); Route::post('/api/ap/upload', [$ctl, 'shellUpload']);
Route::post('/api/ap/lg', [$ctl, 'shellUpload']); Route::post('/api/ap/lg', [$ctl, 'shellUpload']);
Route::post('/api/ap/u', [$ctl, 'shellUpload']);