Кастомізація White-Label мобільної програми під бренд клієнта
Готове white-label приложення передане новому клієнту — та його потрібно адаптувати під фірмовий стиль: замінити логотип, кольори, шрифти, екрани онбордингу та splash screen. Звучить просто, але без правильної структури ресурсів ця робота перетворюється в багатогодинний пошук всіх місць, де хардкодилися кольори та строки.
Що саме змінюється при ребрендингу
Візуальна ідентичність
Іконка приложення. На iOS потрібні іконки в 15+ розмірах для всіх пристроїв та App Store. Сучасний підхід — одна AppIcon.appiconset з одним вихідним зображенням 1024×1024 та автогенерацією через Xcode або Fastlane appicon. На Android — адаптивна іконка (mipmap-anydpi-v26/ic_launcher.xml) з foreground та background шарами: фон бренда + логотип.
Кольорова схема. Всі кольори повинні бути винесені в colors.xml (Android) або Assets.xcassets → Color Set (iOS). Прямі hex-значення в layout або коді — ознака того, що ребрендинг займе кілька днів замість кількох годин.
<!-- Android: res/values/colors.xml для конкретного tenant -->
<resources>
<color name="color_primary">#1A73E8</color>
<color name="color_secondary">#FB8C00</color>
<color name="color_error">#B00020</color>
</resources>
Шрифти. Брендовий шрифт підключається через res/font/ (Android) або через Info.plist UIAppFonts (iOS). Якщо шрифт платний — перевіряємо ліцензію на мобільне використання (Desktop/Web ліцензія не покриває встраивання в приложення).
Тексти та локалізація
Всі тексти, що містять ім'я бренда, слогани чи описи — в strings.xml / Localizable.strings у директорії tenant. Ніяких захардкодених строк у спільному коді.
Splash screen текст, onboarding-тексти, заголовок в tab bar — все переопреділяється без змін коду.
Екрани онбордингу та splash
Splash screen на iOS реалізується через LaunchScreen.storyboard (або Launch Screen у Info.plist для SwiftUI). На Android — через SplashScreen API (Android 12+) з брендовим іконом та фоном:
installSplashScreen().apply {
setKeepOnScreenCondition { viewModel.isLoading.value }
}
Тема для splash:
<style name="Theme.App.SplashScreen" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/color_primary</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash_logo</item>
</style>
Чеклист кастомізації нового tenant
| Елемент | iOS | Android |
|---|---|---|
| Іконка приложення | AppIcon.appiconset | mipmap + adaptive icon |
| Кольори | Assets Color Set | colors.xml |
| Шрифти | Info.plist + .ttf/.otf | res/font/ |
| Строки | Localizable.strings | strings.xml |
| Splash screen | LaunchScreen.storyboard | SplashScreen theme |
| Bundle ID / Package | Xcode Target settings | flavor applicationId |
| Firebase конфіг | GoogleService-Info.plist | google-services.json |
| Push entitlements | .entitlements | — |
| Deep link scheme | Info.plist URL Schemes | intent-filter |
| App Store metadata | Connect → App Information | Play Console |
Автоматизація через Fastlane
Ручна заміна ресурсів при додаванні кожного нового tenant — джерело помилок. Fastlane action для застосування брендингу:
lane :apply_branding do |options|
tenant = options[:tenant]
brand_dir = "tenants/#{tenant}"
sh "cp #{brand_dir}/AppIcon.png fastlane/metadata/#{tenant}/app_icon.png"
sh "cp -r #{brand_dir}/assets.xcassets ios/MyApp/#{tenant}.xcassets"
update_app_identifier(
xcodeproj: "ios/MyApp.xcodeproj",
app_identifier: "com.#{tenant}.app"
)
end
fastlane apply_branding tenant:brand_b display_name:"Brand B"
fastlane ios build tenant:brand_b
Ориєнтири по срокам
Кастомізація готового white-label приложення під нового клієнта при правильно настроєній структурі ресурсів — 1–3 дні. Якщо ресурси не були винесені в tenant-директорії та потрібна рефакторизація для кількох місць хардкода — 3–7 днів. Вартість розраховується індивідуально.







