Snapshot (Fastlane) — barcha qo'llab-quvvatlanadigan qurilmalar va tillarda iOS ilovalarining ekran tasvirlarini avtomatik yaratish vositasi. Simulyator orqali qo'lda ekran tasvirlarini yaratishdan farqli o'laroq, Snapshot UI testlarini ishga tushiradi va ilovaning belgilangan nuqtalarida ekran tasvirlarini oladi. Fastlane rasmiy hujjatlariga (2026) ko'ra, Snapshot reliz uchun ekran tasvirlarini tayyorlash vaqtini 4 soatdan 15 daqiqaga qisqartiradi.
Asosiy ma'lumotlar
Snapshot (Fastlane) — App Store uchun ilova ekran tasvirlarini yaratishni avtomatlashtiradigan Fastlane ekotizimining komponenti. U iOS simulyatorlarida UI testlarini ishga tushiradi, ilovaning belgilangan holatlarida ekran tasvirlarini oladi va ularni har bir til va qurilma uchun to'g'ri nomlar bilan tuzilgan papkada saqlaydi.
Snapshotsiz dasturchilar simulyatorni qo'lda ishga tushiradi, har bir ekranni ochadi, Cmd+S orqali ekran tasvirini oladi, tilni o'zgartiradi va barcha kombinatsiyalar uchun jarayonni takrorlaydi. Ekran tasvirlarini avtomatlashtirish ASO optimallashtirishning asosiy elementi, chunki App Store har bir yangi reliz uchun dolzarb rasmlarni talab qiladi va 60+ ekran tasvirini qo'lda yangilash soatlab vaqt oladi.
App Store Connect Documentation (2025) ma'lumotlariga ko'ra, lokalizatsiya qilingan ekran tasvirlari bo'lgan ilovalar maqsadli mamlakatlarda 25% ko'proq konversiyaga ega. Snapshot jamoalarga bir ishga tushirishda 32 til uchun vizual kontentni yangilash imkonini beradi, bu ayniqsa ilovaning yangi funksiyalariga bog'liq marketing kampaniyalari uchun muhim.
Snapshot-dan App Store-da nashr etiladigan har qanday loyihada foydalaning — bu reliz jarayonini avtomatlashtirish va ASO-ni yaxshilashga intilayotgan jamoalar uchun standart vositadir.
Ekran tasvirlarini yaratish jarayoni Snapshot-da bir necha bosqichdan iborat: UI testlarini tayyorlash, Snapfile sozlamalari, simulyatorlarni ishga tushirish va natijalarni yig'ish. Snapshot ketma-ket ko'rsatilgan qurilmalar va tillar uchun har bir simulyatorni ishga tushiradi, UI testlarini bajaradi va snapshot() funksiyasi chaqirilgan nuqtalarda tasvirlarni oladi.
Barcha testlar tugagandan so'ng, Snapshot ekran tasvirlarini App Store talablariga mos nomlar bilan screenshots/[Language]/ papkasiga to'playdi. Har bir ekran tasviri maqsadli qurilmaga mos rezolyutsiya bilan PNG formatida saqlanadi. Snapshot shuningdek, yaratilgan barcha tasvirlarni vizual tekshirish uchun HTML hisobotini yaratadi.
Snapshot ishlashi uchun ilovaning XCTest UI test kodiga snapshot() chaqiruvlari qo'shilishi kerak. Funksiya chaqiruv paytidagi joriy ekran holatining tasvirini oladi. Dasturchi snapshot() ni har bir asosiy harakatdan keyin joylashtiradi: ekranni ochish, ma'lumotlarni kiritish, tablar bo'ylab navigatsiya yoki natijalarni ko'rsatish.
UI test strukturasiga misol: test ilovaga kiradi, kirish ekrani tasviri uchun snapshot("01-LoginScreen") chaqiradi, so'ng asosiy ekranga o'tadi va asosiy ekran tasviri uchun snapshot("02-HomeScreen") chaqiradi. XCTest — iOS ilovalarini birlik va UI testlash uchun Apple freymvorki, to'g'ridan-to'g'ri Xcode-ga integratsiyalangan.
// Snapshot uchun 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");
}
Snapshot Snapfile-da ko'rsatilgan har bir til uchun simulyator tilini avtomatik o'zgartiradi. Ilova tegishli lokalizatsiya bilan ishga tushiriladi va UI testlari shu tilda bajariladi. Ekran tasvirlarini lokalizatsiya qilish — ASO ning muhim omili: foydalanuvchilar 75% hollarda ona tilidagi kontentga ega ilovalarni afzal ko'radilar, jumladan App Store-dagi ekran tasvirlari.
Har bir qurilma uchun Snapshot tegishli ekran diagonali bilan alohida simulyatorni ishga tushiradi. App Store talab qiladigan barcha o'lchamlar qo'llab-quvvatlanadi: iPhone 6.5 dyuym (iPhone 15 Pro Max), 5.5 dyuym (iPhone 8 Plus), 6.7 dyuym (iPhone 15 Plus) va iPad 12.9 dyuym. iOS Simulyatori — jismoniy qurilmasiz ilovalarni sinash uchun Xcode-ga o'rnatilgan iOS qurilmasining dasturiy emulyatsiyasi.
# Barcha qurilmalar va tillar uchun ekran tasvirlarini yaratish
fastlane snapshot
# Faqat ko'rsatilgan qurilmalar uchun generatsiya
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# Ekran tasvirlarini yaratishdan oldin tozalash
fastlane snapshot --reinstall_app --erase_simulator
Snapfile — ekran tasvirlarini yaratish parametrlarini belgilaydigan Fastlane konfiguratsiya fayli: qurilmalar ro'yxati, tillar, kutish vaqti va ishga tushirish variantlari. Snapfile fastlane papkasida saqlanadi va loyiha bilan birga versiyalanadi, bu jamoa a'zolari uchun yagona konfiguratsiyani kafolatlaydi.
# Snapfile — ekran tasvirlari konfiguratsiyasi
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 generatsiyani boshlashdan oldin eski ekran tasvirlarini o'chiradi — bu chiqish papkasida eskirgan rasmlar to'planishining oldini oladi. reinstall_app har bir ishga tushirishdan oldin ilovani simulyatorga qayta o'rnatadi, bu oldingi testlarning yangi generatsiyaga ta'sirisiz toza sessiyani kafolatlaydi.
erase_simulator parametri testlarni boshlashdan oldin simulyator tarkibini tozalaydi — kesh, sozlamalar va oldingi sessiyalar ma'lumotlarini o'z ichiga oladi. Bu, ayniqsa, ilovaning onboarding yoki birinchi ishga tushirilishini tekshiradigan testlar uchun muhim. Snapshot shuningdek, simulyatorda iOS versiyasini ko'rsatish uchun ios_version va UI testining birinchi xatosida generatsiyani to'xtatish uchun stop_after_first_error parametrlarini qo'llab-quvvatlaydi.
SwiftUI loyihalari uchun use_simulator_for_language parametri mavjud bo'lib, u tizim regionini o'zgartirish o'rniga simulyator sozlamalari orqali tilni almashtirishni boshqaradi. Snapshot shuningdek, ilovani ishga tushirishda qo'shimcha argumentlarni uzatish uchun launch_arguments ni qo'llab-quvvatlaydi — backendning turli konfiguratsiyalari yoki A/B testlari bilan sinovlar uchun foydali.
Snapshot interfeysi generatsiyani ishga tushirish uchun asosiy buyruqlar va jarayonni aniq boshqarish uchun kengaytirilgan bayroqlarni o'z ichiga oladi. Asosiy buyruq fastlane snapshot Snapfile konfiguratsiyasi asosida ekran tasvirlarini to'liq generatsiya siklini ishga tushiradi.
fastlane snapshot --devices "iPhone 15" buyrug'i Snapfiledan qolganlarini e'tiborsiz qoldirib, faqat ko'rsatilgan qurilmalar uchun ekran tasvirlarini yaratadi. --languages "en-US,ru" generatsiya uchun tillarni filtrlaydi. Ushbu bayroqlar kombinatsiyasi 5 qurilma va 10 tilda 30 daqiqagacha davom etishi mumkin bo'lgan to'liq generatsiya siklini kutmasdan bitta qurilma va tilda ekran tasvirlarini tez tekshirish uchun foydali.
# Bir qurilma uchun tez generatsiya
fastlane snapshot --devices "iPhone 15" --languages "en-US"
# Ilovani qayta o'rnatish bilan generatsiya
fastlane snapshot --reinstall_app --erase_simulator
# HTML hisoboti bilan generatsiya
fastlane snapshot --output_directory "./build/screenshots"
--output_directory bayrog'i natijalarni saqlash papkasini o'zgartiradi. Odatiy bo'lib, Snapshot ekran tasvirlarini fastlane/screenshots papkasida saqlaydi. Deliver bilan integratsiya uchun Deliverfile kutilgan tuzilmasiga mos papkani ko'rsating — bu fayllarni papkalar o'rtasida qo'lda nusxalamasdan ekran tasvirlarini to'g'ridan-to'g'ri nashr jarayoniga uzatish imkonini beradi.
| Snapshot parametri | Vazifasi | Misol |
|---|---|---|
| devices | Generatsiya uchun qurilmalar ro'yxati | iPhone 15, iPad Pro |
| languages | Lokalizatsiya tillari ro'yxati | en-US, ru, de-DE |
| reinstall_app | Testlardan oldin ilovani qayta o'rnatish | true / false |
| erase_simulator | Ishga tushirishdan oldin simulyatorni tozalash | true / false |
| clear_previous | Eski ekran tasvirlarini o'chirish | true / false |
Snapshot CI/CD da — har bir reliz commitida ekran tasvirlarini avtomatik yaratish. Snapshot Deliver bosqichidan oldin ishga tushiriladi, shunda App Store-dagi ekran tasvirlari ilovaning joriy versiyasiga mos kelishi va oldingi versiyalarning eskirgan interfeys elementlarini o'z ichiga olmasligi kafolatlanadi.
CI da Snapshot ishlashi uchun o'rnatilgan iOS simulyatorlari bilan Xcode talab qilinadi. CI muhitida Snapshot runner-ga oldindan yuklangan Xcode simulyatorlaridan foydalanadi. GitHub Actions qo'shimcha sozlamalarsiz UI testlarini ishga tushirish uchun oldindan o'rnatilgan Xcode va iOS simulyatorlari bilan tasvirlarni taqdim etadi.
# Snapshot-ni CI muhitida ishga tushirish
fastlane snapshot --skip_open_summary \
--output_directory "$CI_PROJECT_DIR/screenshots"
# Ekran tasvirlarini CI artefaktlari sifatida saqlash
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"
--skip_open_summary parametri generatsiyadan keyin HTML hisobotining ochilishini o'chiradi — CI muhitida grafik interfeys mavjud emas. Generatsiya natijalari CI topshirig'ining artefakti sifatida uzatiladigan papkada saqlanadi va keyin reliz bilan birga App Store-ga yuklash uchun Deliver tomonidan ishlatiladi.
CI pipeline-ni tezlashtirish uchun concurrent_simulators orqali parallel ekran tasvirlari generatsiyasidan foydalaning — bu Snapfile parametri bir vaqtning o'zida bir nechta simulyatorlarni ishga tushiradi. Bu 4 parallel oqimdan foydalanganda 5 qurilma va 10 til uchun ekran tasvirlarini generatsiya qilish vaqtini 40 daqiqadan 15 daqiqaga qisqartiradi.
Snapshot-dan foydalanishda dasturchilar ko'pincha UI testlarining beqarorligi, simulyator muammolari va qurilmalarning noto'g'ri konfiguratsiyasi bilan bog'liq xatolarga duch kelishadi. Xatolarni diagnostika qilish Snapshot-da har bir qadamning ekran tasvirlari va muvaffaqiyatsiz testlar haqida ma'lumotni o'z ichiga olgan HTML hisobotini tahlil qilish bilan boshlanadi.
«Failed to build scheme MyAppUITests» xatosi UI testlari sxemasi qurish uchun sozlanmaganida yuz beradi. Yechim: Xcode-da UI testlari uchun alohida Scheme yaratilganligiga va buyruq satridan kirish uchun Shared opsiyasi yoqilganligiga ishonch hosil qiling. Xcode Scheme — har bir harakat uchun maqsadlar va parametrlar to'plamini belgilaydigan ilovani qurish, testlash va ishga tushirish konfiguratsiyasi.
«No simulators found matching...» xatosi ko'rsatilgan qurilma turi yoki iOS versiyasi bilan simulyator yo'qligini bildiradi. Yechim: simulyator yaratish uchun xcrun simctl create ni bajaring yoki xcrun simctl list ro'yxatidan mavjud qurilmani ko'rsating. xcrun simctl — iOS simulyatorlarini boshqarish uchun Xcode buyruq satri vositasi: yaratish, o'chirish, ishga tushirish va diagnostika.
«UI test failure» xatosida UI testi tillardan yoki qurilmalardan birida o'tmaydi. Yechim: Snapshot-ni --stop_after_first_error bayrog'i bilan ishga tushiring, HTML hisobotidagi ekran tasvirini tahlil qiling va testni tuzating. Tez-tez sabab turli tillarda matnning har xil uzunligi bo'lib, buning natijasida interfeys elementlari bir-biriga yopishadi yoki ekran chegaralaridan chiqib ketadi.
Tez-tez beriladigan savollar
Snapshot iPhone 15 Pro Max (6.7 dyuym), iPhone 15 (6.1 dyuym), iPad Pro 12.9 dyuym va iPad mini ni o'z ichiga olgan iPhone va iPad oilasining barcha qurilmalarini qo'llab-quvvatlaydi. Har bir qurilma uchun Snapshot Xcode dan tegishli simulyator skinlarini yuklaydi, bu aniq ekran rezolyutsiyasini kafolatlaydi.
Yo'q, Snapshot faqat Xcode tarkibidagi iOS simulyatorlari bilan ishlaydi. Haqiqiy qurilmalar talab qilinmaydi va qo'llab-quvvatlanmaydi — barcha ekran tasvirlari App Store talablari uchun bir xil rezolyutsiya va rang uzatilishini ta'minlaydigan simulyator muhitida yaratiladi.
Snapshot Snapfiledan har bir til uchun UI testlarini ishga tushirishdan oldin simulyator tilini o'zgartiradi. Ilova tizim lokalizatsiya sozlamalari orqali tegishli tilda ko'rsatiladi. UI testlari NSLocalizedString orqali lokalizatsiya qilingan satrlardan foydalanadi, bu barcha ekran tasvirlarida to'g'ri matnni kafolatlaydi.
Ha, Snapshot Fastlane 2.200 versiyasidan boshlab macOS ilovalarini qo'llab-quvvatlaydi. macOS uchun Snapfileda app_platform("macOS") parametri orqali platformani ko'rsating. Snapshot macOS da UI testlarini ishga tushiradi va Mac App Store talablariga muvofiq ekran tasvirlarini yaratadi.
Qo'lda ekran tasviri har bir ekranni qo'lda ochish, tilni o'zgartirish, qurilmani o'zgartirishni talab qiladi — to'liq to'plam uchun taxminan 60 harakat. Snapshot butun jarayonni avtomatlashtiradi: tillar va qurilmalarni o'zgartiradi, UI testlarini ishga tushiradi va App Store uchun to'g'ri nomlar bilan ekran tasvirlarini 15 daqiqada saqlaydi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.