Snapshot (Fastlane) — mahiyyəti, ekran görüntülərinin yaradılması və mobil tətbiqlərdə konfiqurasiyası

Müəllif: IT Sectr Dərc olunub: 2026-04-15 Oxuma vaxtı: 10 dəq

Snapshot (Fastlane) — bütün dəstəklənən cihazlarda və dillərdə iOS tətbiqlərinin ekran görüntülərini avtomatik yaratmaq üçün alətdir. Simulyator vasitəsilə əl ilə ekran görüntüləri yaratmaqdan fərqli olaraq, Snapshot UI testlərini işə salır və tətbiqin müəyyən nöqtələrində ekran görüntüləri çəkir. Fastlane rəsmi sənədlərinə (2026) görə, Snapshot buraxılış üçün ekran görüntülərinin hazırlanma vaxtını 4 saatdan 15 dəqiqəyə endirir.

Əsas məqamlar

  • Snapshot — bütün cihazlarda və dillərdə UI testləri vasitəsilə iOS tətbiqlərinin avtomatik ekran görüntülərini yaratmaq üçün Fastlane aləti.
  • Alət XCTest UI testləri ilə inteqrasiya olunur: tərtibatçı tətbiqin əsas ekranlarında şəkilləri çəkmək üçün test koduna snapshot() əmrləri əlavə edir.
  • Snapshot App Store tərəfindən tələb olunan bütün iPhone və iPad cihaz ölçülərini dəstəkləyir: 6.5, 5.5, 6.7, 12.9 düym və digər ekran formatları.
  • Konfiqurasiya Snapfile faylı vasitəsilə həyata keçirilir, burada cihazlar, dillər, lokallaşdırma və generasiya üçün simulyator işə salma parametrləri göstərilir.
  • Nəticələr screenshots/ qovluğunda saxlanılır, Deliver ilə uyğunluq — ekran görüntüləri əlavə emal olmadan App Store-a yüklənməyə hazırdır.

Snapshot (Fastlane) nədir?

Snapshot (Fastlane) — App Store üçün tətbiq ekran görüntülərinin yaradılmasını avtomatlaşdıran Fastlane ekosisteminin komponentidir. O, iOS simulyatorlarında UI testlərini işə salır, tətbiqin müəyyən vəziyyətlərində ekran görüntüləri çəkir və onları hər bir dil və cihaz üçün düzgün adlarla strukturlaşdırılmış qovluqda saxlayır.

Snapshot olmadan tərtibatçılar simulyatoru əl ilə işə salır, hər ekranı açır, Cmd+S vasitəsilə ekran görüntüsü çəkir, dili dəyişir və bütün kombinasiyalar üçün prosesi təkrarlayır. Ekran görüntülərinin avtomatlaşdırılması ASO optimallaşdırılmasının əsas elementidir, çünki App Store hər yeni buraxılış üçün aktual şəkillər tələb edir və 60+ ekran görüntüsünün əl ilə yenilənməsi saatlarla iş vaxtı aparır.

App Store Connect Documentation (2025) məlumatına görə, lokallaşdırılmış ekran görüntüləri olan tətbiqlər hədəf ölkələrdə 25% daha çox konversiya əldə edir. Snapshot komandalara bir işə salma ilə 32 dil üçün vizual məzmunu yeniləməyə imkan verir ki, bu da tətbiqin yeni funksiyalarına bağlı marketinq kampaniyaları üçün xüsusilə vacibdir.

Snapshot-dan App Store-da dərc olunan istənilən layihədə istifadə edin — bu, buraxılış prosesinin avtomatlaşdırılmasına və ASO-nun yaxşılaşdırılmasına çalışan komandalar üçün standart alətdir.

Snapshot ekran görüntülərini necə yaradır

Ekran görüntülərinin yaradılması prosesi Snapshot-da bir neçə mərhələdən ibarətdir: UI testlərinin hazırlanması, Snapfile konfiqurasiyası, simulyatorların işə salınması və nəticələrin toplanması. Snapshot ardıcıl olaraq göstərilən cihazlar və dillər üçün hər simulyatoru işə salır, UI testlərini yerinə yetirir və snapshot() funksiyasının çağırıldığı nöqtələrdə şəkillər çəkir.

Bütün testlər başa çatdıqdan sonra Snapshot ekran görüntülərini App Store tələblərinə uyğun adlarla screenshots/[Language]/ qovluğuna toplayır. Hər bir ekran görüntüsü hədəf cihaza uyğun təsvir ölçüsü ilə PNG formatında saxlanılır. Snapshot həmçinin yaradılmış bütün şəkillərin vizual yoxlanılması üçün HTML hesabatı yaradır.

Snapshot üçün UI testlərinin qurulması

Snapshot-un işləməsi üçün tətbiqin XCTest UI test koduna snapshot() çağırışları əlavə edilməlidir. Funksiya çağırış anında cari ekran vəziyyətinin ekran görüntüsünü çəkir. Tərtibatçı snapshot()-i hər əsas əməliyyatdan sonra yerləşdirir: ekranın açılması, məlumatların daxil edilməsi, tablar üzrə naviqasiya və ya nəticələrin göstərilməsi.

UI test strukturunun nümunəsi: test tətbiqə daxil olur, giriş ekranının şəkli üçün snapshot("01-LoginScreen") çağırır, sonra əsas ekrana keçir və əsas ekranın şəkli üçün snapshot("02-HomeScreen") çağırır. XCTest — iOS tətbiqlərinin vahid və UI testi üçün Apple freymvorku, birbaşa Xcode-a inteqrasiya olunub.

objective-c
// Snapshot üçün UI testi
- (void)testScreenshots {
    XCUIApplication *app = [[XCUIApplication alloc] init];
    [app launch];
    
    snapshot(@"01-LoginScreen");
    
    [app.textFields[@"email"] tap];
    [app.textFields[@"email"] typeText:@"user@company.com"];
    [app.buttons[@"Login"] tap];
    
    snapshot(@"02-HomeScreen");
}

Dillər və cihazlarla iş

Snapshot Snapfile-da göstərilən hər bir dil üçün simulyatorun dilini avtomatik dəyişir. Tətbiq müvafiq lokallaşdırma ilə işə salınır və UI testləri bu dildə yerinə yetirilir. Ekran görüntülərinin lokallaşdırılması — ASO-nun kritik amili: istifadəçilər 75% hallarda ana dilində məzmunu olan tətbiqlərə üstünlük verir, o cümlədən App Store-dakı ekran görüntüləri.

Hər bir cihaz üçün Snapshot müvafiq ekran diaqonalı ilə ayrıca simulyator işə salır. App Store tərəfindən tələb olunan bütün ölçülər dəstəklənir: iPhone 6.5 düym (iPhone 15 Pro Max), 5.5 düym (iPhone 8 Plus), 6.7 düym (iPhone 15 Plus) və iPad 12.9 düym. iOS Simulyatoru — fiziki cihaz olmadan tətbiqləri sınamaq üçün Xcode-a daxil edilmiş iOS cihazının proqram emulyasiyasıdır.

bash
# Bütün cihazlar və dillər üçün ekran görüntülərinin yaradılması
fastlane snapshot

# Yalnız göstərilən cihazlar üçün generasiya
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"

# Ekran görüntülərinin yaradılmasından əvvəl təmizləmə
fastlane snapshot --reinstall_app --erase_simulator

Snapshot-in Snapfile vasitəsilə konfiqurasiyası

Snapfile — ekran görüntülərinin yaradılması parametrlərini təyin edən Fastlane konfiqurasiya faylıdır: cihazların siyahısı, dillər, gözləmə vaxtı və işə salma seçimləri. Snapfile fastlane qovluğunda saxlanılır və layihə ilə birlikdə versiyalanır ki, bu da komandanın bütün üzvləri üçün vahid konfiqurasiyanı təmin edir.

ruby
# Snapfile — ekran görüntülərinin konfiqurasiyası
devices([
    "iPhone 15 Pro Max",
    "iPhone 15",
    "iPad Pro (12.9-inch)"
])

languages([
    "en-US",
    "ru",
    "de-DE"
])

scheme("MyAppUITests")
output_directory("./screenshots")
clear_previous_screenshots(true)
reinstall_app(true)
erase_simulator(true)

clear_previous_screenshots parametri generasiyaya başlamazdan əvvəl köhnə ekran görüntülərini silir — bu, çıxış qovluğunda köhnəlmiş şəkillərin yığılmasının qarşısını alır. reinstall_app hər işə salmadan əvvəl tətbiqi simulyatora yenidən quraşdırır ki, bu da əvvəlki testlərin yeni generasiyaya təsiri olmadan təmiz sessiyanı təmin edir.

erase_simulator parametri testlərə başlamazdan əvvəl simulyatorun məzmununu təmizləyir — keş, parametrlər və əvvəlki sessiyaların məlumatları daxil olmaqla. Bu, xüsusilə tətbiqin onboardingini və ya ilk işə salınmasını yoxlayan testlər üçün vacibdir. Snapshot həmçinin simulyatorda iOS versiyasını göstərmək üçün ios_version və UI testinin ilk xətasında generasiyanı dayandırmaq üçün stop_after_first_error parametrlərini dəstəkləyir.

SwiftUI layihələri üçün use_simulator_for_language parametri mövcuddur ki, bu da sistem regionunu dəyişmək əvəzinə simulyator parametrləri vasitəsilə dilin dəyişdirilməsini idarə edir. Snapshot həmçinin tətbiqi işə salarkən əlavə arqumentlər ötürmək üçün launch_arguments dəstəkləyir — backend-in müxtəlif konfiqurasiyaları və ya A/B testləri ilə sınaqlar üçün faydalıdır.

Snapshot əmrləri ilə şəkillərin yaradılması

Snapshot interfeysi generasiyanı işə salmaq üçün əsas əmrləri və proses üzərində dəqiq nəzarət üçün genişləndirilmiş flaqqları əhatə edir. Əsas əmr fastlane snapshot Snapfile konfiqurasiyası əsasında ekran görüntülərinin tam generasiya dövrünü işə salır.

Sürətli generasiya və filtrləmə

fastlane snapshot --devices "iPhone 15" əmri Snapfile-dan qalanlarını nəzərə almadan yalnız göstərilən cihazlar üçün ekran görüntüləri yaradır. --languages "en-US,ru" generasiya üçün dilləri filtrləyir. Bu flaqqların kombinasiyası 5 cihaz və 10 dildə 30 dəqiqəyə qədər çəkə bilən tam generasiya dövrü olmadan bir cihaz və dildə ekran görüntülərini tez yoxlamaq üçün faydalıdır.

bash
# Bir cihaz üçün sürətli generasiya
fastlane snapshot --devices "iPhone 15" --languages "en-US"

# Tətbiqin yenidən quraşdırılması ilə generasiya
fastlane snapshot --reinstall_app --erase_simulator

# HTML hesabatı ilə generasiya
fastlane snapshot --output_directory "./build/screenshots"

--output_directory flaqı nəticələrin saxlanma qovluğunu dəyişir. Susmaya görə Snapshot ekran görüntülərini fastlane/screenshots qovluğunda saxlayır. Deliver ilə inteqrasiya üçün Deliverfile gözlənilən strukturuna uyğun qovluq göstərin — bu, faylları qovluqlar arasında əl ilə köçürmədən ekran görüntülərini birbaşa nəşr prosesinə ötürməyə imkan verir.

Snapshot parametriTəyinatNümunə
devicesGenerasiya üçün cihazların siyahısıiPhone 15, iPad Pro
languagesLokallaşdırma dillərinin siyahısıen-US, ru, de-DE
reinstall_appTestlərdən əvvəl tətbiqin yenidən quraşdırılmasıtrue / false
erase_simulatorİşə salmadan əvvəl simulyatorun təmizlənməsitrue / false
clear_previousKöhnə ekran görüntülərinin silinməsitrue / false

Snapshot-in CI/CD pipeline-a inteqrasiyası

Snapshot CI/CD-də — hər buraxılış commitində avtomatik ekran görüntülərinin yaradılmasıdır. Snapshot Deliver mərhələsindən əvvəl işə salınır ki, App Store-dakı ekran görüntülərinin tətbiqin cari versiyasına uyğun olmasını və əvvəlki versiyaların köhnəlmiş interfeys elementlərini ehtiva etməməsini təmin etsin.

CI-da Snapshot-un işləməsi üçün quraşdırılmış iOS simulyatorları ilə Xcode tələb olunur. CI mühitində Snapshot runner-a əvvəlcədən yüklənmiş Xcode simulyatorlarından istifadə edir. GitHub Actions əlavə konfiqurasiya olmadan UI testlərini işə salmaq üçün əvvəlcədən quraşdırılmış Xcode və iOS simulyatorları olan image-lər təqdim edir.

bash
# Snapshot-un CI mühitində işə salınması
fastlane snapshot --skip_open_summary \

      --output_directory "$CI_PROJECT_DIR/screenshots"

# Ekran görüntülərinin CI artefaktları kimi saxlanılması
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"

--skip_open_summary parametri generasiyadan sonra HTML hesabatının açılmasını söndürür — CI mühitində qrafik interfeys mövcud deyil. Generasiya nəticələri CI tapşırığının artefaktı kimi ötürülən qovluqda saxlanılır və sonra buraxılışla birlikdə App Store-a yükləmək üçün Deliver tərəfindən istifadə olunur.

CI pipeline-nı sürətləndirmək üçün concurrent_simulators vasitəsilə paralel ekran görüntüləri generasiyasından istifadə edin — bu Snapfile parametri eyni anda bir neçə simulyatoru işə salır. Bu, 4 paralel axından istifadə edərkən 5 cihaz və 10 dil üçün ekran görüntülərinin generasiya vaxtını 40 dəqiqədən 15 dəqiqəyə endirir.

Snapshot ilə işləyərkən tipik səhvlər

Snapshot-dan istifadə edərkən tərtibatçılar ən çox UI testlərinin qeyri-sabitliyi, simulyator problemləri və cihazların səhv konfiqurasiyası ilə bağlı səhvlərlə qarşılaşır. Səhvlərin diaqnostikası Snapshot-da hər addımın ekran görüntülərini və uğursuz testlər haqqında məlumatları ehtiva edən HTML hesabatının təhlili ilə başlayır.

«Failed to build scheme MyAppUITests» səhvi UI testlərinin sxemi qurma üçün konfiqurasiya edilmədikdə yaranır. Həlli: Xcode-da UI testləri üçün ayrıca Scheme yaradıldığından və əmr sətrindən giriş üçün Shared seçiminin aktiv olduğundan əmin olun. Xcode Scheme — hər bir hərəkət üçün məqsəd və parametrlər dəstini təyin edən tətbiqin qurulması, test edilməsi və işə salınması konfiqurasiyasıdır.

«No simulators found matching...» səhvi göstərilən cihaz növü və ya iOS versiyası ilə simulyatorun olmamasını göstərir. Həlli: simulyator yaratmaq üçün xcrun simctl create yerinə yetirin və ya xcrun simctl list siyahısından mövcud cihazı göstərin. xcrun simctl — iOS simulyatorlarını idarə etmək üçün Xcode əmr sətri aləti: yaratma, silmə, işə salma və diaqnostika.

«UI test failure» səhvində UI testi dillərdən və ya cihazlardan birində keçmir. Həlli: ilk xətada dayanmaq üçün Snapshot-ı --stop_after_first_error flaqı ilə işə salın, HTML hesabatındakı ekran görüntüsünü təhlil edin və testi düzəldin. Tez-tez səbəb müxtəlif dillərdə mətnin fərqli uzunluğudur, buna görə interfeys elementləri üst-üstə düşür və ya ekranın sərhədlərindən kənara çıxır.

Tez-tez verilən suallar

Snapshot hansı iOS cihazlarını dəstəkləyir?

Snapshot iPhone 15 Pro Max (6.7 düym), iPhone 15 (6.1 düym), iPad Pro 12.9 düym və iPad mini daxil olmaqla iPhone və iPad ailəsinin bütün cihazlarını dəstəkləyir. Hər bir cihaz üçün Snapshot Xcode-dan müvafiq simulyator skin-lərini yükləyir ki, bu da dəqiq ekran təsvir ölçüsünü təmin edir.

Snapshot-un işləməsi üçün real cihazlar lazımdırmı?

Xeyr, Snapshot yalnız Xcode tərkibindəki iOS simulyatorları ilə işləyir. Real cihazlar tələb olunmur və dəstəklənmir — bütün ekran görüntüləri App Store tələbləri üçün eyni təsvir ölçüsü və rəng ötürülməsini təmin edən simulyator mühitində yaradılır.

Snapshot ekran görüntülərində mətnin lokallaşdırılmasını necə idarə edir?

Snapshot Snapfile-dan hər bir dil üçün UI testlərini işə salmazdan əvvəl simulyatorun dilini dəyişir. Tətbiq sistem lokallaşdırma parametrləri vasitəsilə müvafiq dildə göstərilir. UI testləri NSLocalizedString vasitəsilə lokallaşdırılmış sətirlərdən istifadə edir ki, bu da bütün ekran görüntülərində düzgün mətni təmin edir.

macOS tətbiqləri üçün ekran görüntüləri yaratmaq mümkündürmü?

Bəli, Snapshot Fastlane 2.200 versiyasından etibarən macOS tətbiqlərini dəstəkləyir. macOS üçün Snapfile-da app_platform("macOS") parametri vasitəsilə platformanı göstərin. Snapshot macOS-da UI testlərini işə salır və Mac App Store tələblərinə uyğun ekran görüntüləri yaradır.

Snapshot adi Cmd+S ekran görüntüsündən nə ilə fərqlənir?

Əl ilə ekran görüntüsü hər ekranı əl ilə açmağı, dili dəyişməyi, cihazı dəyişməyi tələb edir — tam dəst üçün təxminən 60 hərəkət. Snapshot bütün prosesi avtomatlaşdırır: dilləri, cihazları dəyişir, UI testlərini işə salır və App Store üçün düzgün adlarla ekran görüntülərini 15 dəqiqəyə saxlayır.

Xülasə

  • Snapshot — bütün cihazlarda və dillərdə XCTest UI testləri vasitəsilə iOS tətbiqlərinin avtomatik ekran görüntülərini yaratmaq üçün Fastlane aləti.
  • Tərtibatçı tətbiqin əsas nöqtələrində UI test koduna snapshot() çağırışları əlavə edir — Snapshot bu yerlərdə şəkillər çəkir.
  • Snapfile vasitəsilə konfiqurasiya cihazların, dillərin və simulyator parametrlərinin siyahısını təyin edir: devices, languages, reinstall_app və erase_simulator.
  • Nəticələr birbaşa App Store-a yükləmək üçün Deliver ilə uyğun formatda screenshots/[Language]/ qovluğunda saxlanılır.
  • CI/CD inteqrasiyası prosesi sürətləndirmək üçün paralel simulyatorlarla hər buraxılışdan əvvəl avtomatik olaraq təzə ekran görüntüləri yaratmağa imkan verir.
  • Snapshot-un tipik səhvləri müxtəlif dillərdə qeyri-sabit UI testləri, Xcode-da simulyatorların olmaması və ya Scheme-in səhv konfiqurasiyası ilə bağlıdır.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun