Snapshot (Fastlane) تمام معاون آلات اور زبانوں پر iOS ایپس کے خودکار اسکرین شاٹ جنریشن کا ایک ٹول ہے۔ سمیلیٹر کے ذریعے دستی اسکرین شاٹ بنانے کے برعکس، Snapshot UI ٹیسٹ چلاتا ہے اور ایپ کے مخصوص پوائنٹس پر اسکرین شاٹس لیتا ہے۔ سرکاری Fastlane دستاویزات (2026) کے مطابق، Snapshot ریلیز کے لیے اسکرین شاٹس کی تیاری کا وقت 4 گھنٹے سے کم کرکے 15 منٹ کر دیتا ہے۔
اہم نکات
Snapshot (Fastlane) Fastlane ماحولیاتی نظام کا ایک جزو ہے جو App Store کے لیے ایپ اسکرین شاٹس بنانے کو خودکار بناتا ہے۔ یہ iOS سمیلیٹروں پر UI ٹیسٹ چلاتا ہے، ایپ کی مخصوص حالتوں میں اسکرین شاٹس لیتا ہے اور انہیں ہر زبان اور ڈیوائس کے لیے درست ناموں کے ساتھ ایک منظم ڈائریکٹری میں محفوظ کرتا ہے۔
Snapshot کے بغیر، ڈویلپر دستی طور پر سمیلیٹر شروع کرتے ہیں، ہر اسکرین کھولتے ہیں، Cmd+S کے ذریعے اسکرین شاٹ لیتے ہیں، زبان تبدیل کرتے ہیں اور تمام مجموعوں کے لیے عمل دہراتے ہیں۔ اسکرین شاٹ آٹومیشن ASO اصلاح کا ایک اہم عنصر ہے، کیونکہ App Store کو ہر نئی ریلیز کے لیے تازہ ترین اسکرین شاٹس درکار ہوتے ہیں، اور 60+ اسکرین شاٹس کو دستی طور پر اپ ڈیٹ کرنے میں گھنٹوں کام لگتا ہے۔
App Store Connect دستاویزات (2025) کے مطابق، مقامی بنائے گئے اسکرین شاٹس والی ایپس کو ہدف والے ممالک میں 25% زیادہ تبدیلیاں ملتی ہیں۔ Snapshot ٹیموں کو ایک رن میں 32 زبانوں کے لیے بصری مواد اپ ڈیٹ کرنے کی اجازت دیتا ہے، جو ایپ کی نئی خصوصیات سے منسلک مارکیٹنگ مہمات کے لیے خاص طور پر اہم ہے۔
کسی بھی پروجیکٹ میں Snapshot استعمال کریں جو App Store پر شائع ہوتا ہے — یہ ریلیز کے عمل کو خودکار بنانے اور ASO کو بہتر بنانے کے خواہاں ٹیموں کے لیے معیاری ٹول ہے۔
Snapshot میں اسکرین شاٹ جنریشن کا عمل کئی مراحل پر مشتمل ہے: UI ٹیسٹ کی تیاری، Snapfile کی ترتیب، سمیلیٹروں کا آغاز اور نتائج جمع کرنا۔ Snapshot مخصوص آلات اور زبانوں کے لیے ترتیب وار ہر سمیلیٹر شروع کرتا ہے، UI ٹیسٹ چلاتا ہے اور ان پوائنٹس پر اسکرین شاٹس لیتا ہے جہاں snapshot() فنکشن کال کیا جاتا ہے۔
تمام ٹیسٹ مکمل ہونے کے بعد، Snapshot App Store کی ضروریات کو پورا کرنے والے ناموں کے ساتھ screenshots/[Language]/ ڈائریکٹری میں اسکرین شاٹس جمع کرتا ہے۔ ہر اسکرین شاٹ PNG فارمیٹ میں ہدف ڈیوائس سے مماثل ریزولوشن کے ساتھ محفوظ کیا جاتا ہے۔ Snapshot تمام بنائے گئے اسکرین شاٹس کی بصری تصدیق کے لیے ایک HTML رپورٹ بھی تیار کرتا ہے۔
Snapshot کے کام کرنے کے لیے، ایپ کے XCTest UI ٹیسٹ کوڈ میں snapshot() کالز شامل کرنا ضروری ہے۔ فنکشن کال کے وقت موجودہ اسکرین حالت کا اسکرین شاٹ لیتا ہے۔ ڈویلپر ہر اہم عمل (اسکرین کھولنا، ڈیٹا داخل کرنا، ٹیبز کے ذریعے نیویگیٹ کرنا یا نتائج دکھانا) کے بعد snapshot() رکھتا ہے۔
UI ٹیسٹ ڈھانچے کی مثال: ٹیسٹ ایپ میں لاگ ان کرتا ہے، لاگ ان اسکرین کیپچر کرنے کے لیے snapshot("01-LoginScreen") کال کرتا ہے، پھر ہوم اسکرین پر جاتا ہے اور ہوم اسکرین کیپچر کرنے کے لیے snapshot("02-HomeScreen") کال کرتا ہے۔ XCTest iOS ایپس کے یونٹ اور UI ٹیسٹنگ کے لیے Apple کا فریم ورک ہے، جو براہ راست Xcode میں ضم ہے۔
// Snapshot کے لیے UI ٹیسٹ
- (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 میں بتائی گئی ہر زبان کے لیے سمیلیٹر کی زبان تبدیل کرتا ہے۔ ایپ متعلقہ لوکلائزیشن کے ساتھ شروع ہوتی ہے اور UI ٹیسٹ اس زبان میں چلتے ہیں۔ اسکرین شاٹ لوکلائزیشن ASO کا ایک اہم عنصر ہے: 75% معاملات میں صارفین اپنی مادری زبان میں مواد والی ایپس کو ترجیح دیتے ہیں، بشمول App Store میں اسکرین شاٹس۔
ہر ڈیوائس کے لیے، Snapshot متعلقہ اسکرین سائز کے ساتھ ایک علیحدہ سمیلیٹر شروع کرتا ہے۔ App Store کے لیے درکار تمام سائز سپورٹ ہیں: iPhone 6.5 انچ (iPhone 15 Pro Max)، 5.5 انچ (iPhone 8 Plus)، 6.7 انچ (iPhone 15 Plus) اور iPad 12.9 انچ۔ iOS سمیلیٹر ایک iOS ڈیوائس کا سافٹ ویئر ایمولیشن ہے جو Xcode میں بنایا گیا ہے تاکہ فزیکل ڈیوائس کے بغیر ایپس کی جانچ کی جا سکے۔
# تمام آلات اور زبانوں کے لیے اسکرین شاٹس بنائیں
fastlane snapshot
# صرف مخصوص آلات کے لیے بنائیں
fastlane snapshot --devices "iPhone 15 Pro Max,iPhone 15"
# اسکرین شاٹ جنریشن سے پہلے صاف کریں
fastlane snapshot --reinstall_app --erase_simulator
Snapfile ایک Fastlane کنفیگریشن فائل ہے جو اسکرین شاٹ جنریشن پیرامیٹرز (ڈیوائس کی فہرست، زبانیں، ٹائم آؤٹ اور لانچ کے اختیارات) کی وضاحت کرتی ہے۔ Snapfile fastlane ڈائریکٹری میں محفوظ ہوتی ہے اور پروجیکٹ کے ساتھ ورژن ہوتی ہے، جو ٹیم کے تمام اراکین کے لیے متحد کنفیگریشن کو یقینی بناتی ہے۔
# Snapfile — اسکرین شاٹ کنفیگریشن
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 پیرامیٹر جنریشن شروع کرنے سے پہلے پرانے اسکرین شاٹس کو حذف کرتا ہے — یہ آؤٹ پٹ ڈائریکٹری میں پرانے اسکرین شاٹس کے جمع ہونے کو روکتا ہے۔ reinstall_app ہر رن سے پہلے سمیلیٹر پر ایپ کو دوبارہ انسٹال کرتا ہے، جو نئی جنریشن پر پچھلے ٹیسٹوں کے اثر کے بغیر ایک صاف سیشن کو یقینی بناتا ہے۔
erase_simulator پیرامیٹر ٹیسٹ شروع کرنے سے پہلے سمیلیٹر کے مواد کو صاف کرتا ہے — بشمول کیشے، سیٹنگز اور پچھلے سیشنوں کا ڈیٹا۔ یہ خاص طور پر ان ٹیسٹوں کے لیے اہم ہے جو آن بورڈنگ یا ایپ کے پہلے لانچ کی جانچ کرتے ہیں۔ Snapshot سمیلیٹر پر iOS ورژن بتانے کے لیے ios_version پیرامیٹر اور پہلی UI ٹیسٹ غلطی پر جنریشن روکنے کے لیے stop_after_first_error کو بھی سپورٹ کرتا ہے۔
SwiftUI پروجیکٹس کے لیے، use_simulator_for_language پیرامیٹر دستیاب ہے، جو سسٹم ریجن تبدیل کرنے کے بجائے سمیلیٹر سیٹنگز کے ذریعے زبان کی تبدیلی کو کنٹرول کرتا ہے۔ Snapshot ایپ شروع کرتے وقت اضافی دلائل دینے کے لیے launch_arguments کو بھی سپورٹ کرتا ہے — مختلف بیک اینڈ کنفیگریشنز یا A/B ٹیسٹوں والے ٹیسٹوں کے لیے مفید۔
Snapshot انٹرفیس میں جنریشن شروع کرنے کے لیے بنیادی کمانڈز اور عمل پر قطعی کنٹرول کے لیے توسیعی جھنڈے شامل ہیں۔ مرکزی کمانڈ fastlane snapshot Snapfile کنفیگریشن کی بنیاد پر مکمل اسکرین شاٹ جنریشن سائیکل چلاتی ہے۔
کمانڈ fastlane snapshot --devices "iPhone 15" صرف مخصوص آلات کے لیے اسکرین شاٹس بناتی ہے، Snapfile سے باقی کو نظر انداز کرتی ہے۔ --languages "en-US,ru" جنریشن کے لیے زبانوں کو فلٹر کرتا ہے۔ ان جھنڈوں کا مجموعہ ایک ڈیوائس اور زبان پر مکمل جنریشن سائیکل کے بغیر فوری اسکرین شاٹ چیک کرنے کے لیے مفید ہے، جو 5 آلات اور 10 زبانوں کے لیے 30 منٹ تک لگ سکتا ہے۔
# ایک ڈیوائس کے لیے فوری جنریشن
fastlane snapshot --devices "iPhone 15" --languages "en-US"
# ایپ دوبارہ انسٹال کر کے بنائیں
fastlane snapshot --reinstall_app --erase_simulator
# HTML رپورٹ کے ساتھ بنائیں
fastlane snapshot --output_directory "./build/screenshots"
--output_directory جھنڈا نتائج کی محفوظ کرنے کی ڈائریکٹری کو تبدیل کرتا ہے۔ ڈیفالٹ طور پر، Snapshot اسکرین شاٹس fastlane/screenshots میں محفوظ کرتا ہے۔ Deliver کے ساتھ انضمام کے لیے، ایک ڈائریکٹری بتائیں جو متوقع Deliverfile ساخت سے مماثل ہو — یہ فولڈرز کے درمیان دستی فائل کاپی کیے بغیر اسکرین شاٹس کو براہ راست اشاعت کے عمل میں منتقل کرنے کی اجازت دیتا ہے۔
| Snapshot پیرامیٹر | مقصد | مثال |
|---|---|---|
| devices | جنریشن کے لیے آلات کی فہرست | iPhone 15, iPad Pro |
| languages | لوکلائزیشن زبانوں کی فہرست | en-US, ru, de-DE |
| reinstall_app | ٹیسٹ سے پہلے ایپ دوبارہ انسٹال کریں | true / false |
| erase_simulator | لانچ سے پہلے سمیلیٹر صاف کریں | true / false |
| clear_previous | پرانے اسکرین شاٹس حذف کریں | true / false |
CI/CD میں Snapshot ہر ریلیز commit کے ساتھ خودکار اسکرین شاٹ جنریشن ہے۔ Snapshot Deliver مرحلے سے پہلے چلتا ہے تاکہ یہ یقینی بنایا جا سکے کہ App Store میں اسکرین شاٹس موجودہ ایپ ورژن سے مماثل ہیں اور پچھلے ورژنز کے پرانے UI عناصر شامل نہیں ہیں۔
CI میں Snapshot کے کام کرنے کے لیے، Xcode میں iOS سمیلیٹر انسٹال ہونا ضروری ہے۔ CI ماحول میں، Snapshot Xcode کے سمیلیٹر استعمال کرتا ہے، جو رنر پر پہلے سے لوڈ ہوتے ہیں۔ GitHub Actions اضافی سیٹ اپ کے بغیر UI ٹیسٹ چلانے کے لیے پہلے سے انسٹال Xcode اور iOS سمیلیٹر کے ساتھ امیجز فراہم کرتا ہے۔
# CI ماحول میں Snapshot چلائیں
fastlane snapshot --skip_open_summary \
--output_directory "$CI_PROJECT_DIR/screenshots"
# اسکرین شاٹس کو CI آرٹیفیکٹ کے طور پر محفوظ کریں
cp -R "screenshots/" "$CI_PROJECT_DIR/artifacts/"
--skip_open_summary پیرامیٹر جنریشن کے بعد HTML رپورٹ کھولنے کو غیر فعال کرتا ہے — CI ماحول میں گرافیکل انٹرفیس دستیاب نہیں ہے۔ جنریشن کے نتائج ایک ڈائریکٹری میں محفوظ ہوتے ہیں جو CI ٹاسک آرٹیفیکٹ کے طور پر منتقل ہوتی ہے اور پھر Deliver ریلیز کے ساتھ App Store پر اپ لوڈ کرنے کے لیے استعمال کرتا ہے۔
CI پائپ لائن کو تیز کرنے کے لیے، concurrent_simulators کے ذریعے متوازی اسکرین شاٹ جنریشن استعمال کریں — ایک Snapfile پیرامیٹر جو ایک ساتھ متعدد سمیلیٹر شروع کرتا ہے۔ یہ 4 متوازی تھریڈ استعمال کرتے ہوئے 5 آلات اور 10 زبانوں کے لیے اسکرین شاٹ جنریشن کا وقت 40 منٹ سے کم کرکے 15 منٹ کر دیتا ہے۔
Snapshot استعمال کرتے وقت، ڈویلپرز اکثر UI ٹیسٹ عدم استحکام، سمیلیٹر مسائل اور غلط ڈیوائس کنفیگریشن سے متعلق غلطیوں کا سامنا کرتے ہیں۔ Snapshot میں غلطی کی تشخیص HTML رپورٹ کے تجزیہ سے شروع ہوتی ہے، جس میں ہر مرحلے کے اسکرین شاٹس اور ناکام ٹیسٹوں کے بارے میں معلومات ہوتی ہیں۔
غلطی "Failed to build scheme MyAppUITests" اس وقت ہوتی ہے جب UI ٹیسٹ اسکیم بلڈ کے لیے ترتیب نہ دی گئی ہو۔ حل: یقینی بنائیں کہ Xcode میں UI ٹیسٹ کے لیے ایک علیحدہ Scheme بنائی گئی ہے اور کمانڈ لائن تک رسائی کے لیے Shared آپشن فعال ہے۔ Xcode Scheme ایپ کے لیے بلڈ، ٹیسٹ اور رن کنفیگریشن ہے جو ہر عمل کے لیے اہداف اور پیرامیٹرز کا سیٹ طے کرتی ہے۔
غلطی "No simulators found matching..." اس بات کی نشاندہی کرتی ہے کہ مخصوص ڈیوائس کی قسم یا iOS ورژن والا کوئی سمیلیٹر موجود نہیں ہے۔ حل: سمیلیٹر بنانے کے لیے xcrun simctl create چلائیں یا xcrun simctl list فہرست سے موجودہ ڈیوائس بتائیں۔ xcrun simctl iOS سمیلیٹر (بنانا، حذف کرنا، شروع کرنا، تشخیص) کے انتظام کے لیے Xcode کمانڈ لائن افادیت ہے۔
غلطی "UI test failure" کے لیے UI ٹیسٹ کسی ایک زبان یا ڈیوائس پر ناکام ہوتا ہے۔ حل: --stop_after_first_error جھنڈے کے ساتھ Snapshot چلائیں، پہلی غلطی پر رکیں، HTML رپورٹ میں اسکرین شاٹ کا تجزیہ کریں اور ٹیسٹ ٹھیک کریں۔ ایک عام وجہ مختلف زبانوں میں متن کی مختلف لمبائی ہے، جس کی وجہ سے UI عناصر اوورلیپ ہوتے ہیں یا اسکرین کی حدود سے باہر چلے جاتے ہیں۔
اکثر پوچھے گئے سوالات
Snapshot iPhone اور iPad خاندان کے تمام آلات کو سپورٹ کرتا ہے، بشمول iPhone 15 Pro Max (6.7 انچ)، iPhone 15 (6.1 انچ)، iPad Pro 12.9 انچ اور iPad mini۔ ہر ڈیوائس کے لیے، Snapshot Xcode سے متعلقہ سمیلیٹر سکنز لوڈ کرتا ہے، جو درست اسکرین ریزولوشن کو یقینی بناتا ہے۔
نہیں، Snapshot خصوصی طور پر Xcode کے iOS سمیلیٹروں کے ساتھ کام کرتا ہے۔ حقیقی آلات ضروری نہیں ہیں اور سپورٹ نہیں کیے جاتے — تمام اسکرین شاٹس سمیلیٹر ماحول میں بنائے جاتے ہیں، جو App Store کی ضروریات کے لیے یکساں ریزولوشن اور رنگ تولید فراہم کرتا ہے۔
Snapshot Snapfile کی ہر زبان کے لیے UI ٹیسٹ چلانے سے پہلے سمیلیٹر کی زبان تبدیل کرتا ہے۔ ایپ سسٹم لوکلائزیشن سیٹنگز کے ذریعے متعلقہ زبان میں ظاہر ہوتی ہے۔ UI ٹیسٹ NSLocalizedString کے ذریعے لوکلائزڈ سٹرنگز استعمال کرتے ہیں، جو تمام اسکرین شاٹس پر درست متن کو یقینی بناتے ہیں۔
ہاں، Snapshot Fastlane ورژن 2.200 سے macOS ایپس کو سپورٹ کرتا ہے۔ macOS کے لیے، app_platform("macOS") پیرامیٹر کے ذریعے Snapfile میں پلیٹ فارم بتائیں۔ Snapshot macOS پر UI ٹیسٹ چلاتا ہے اور Mac App Store کی ضروریات کے مطابق اسکرین شاٹس بناتا ہے۔
دستی اسکرین شاٹ کے لیے ہر اسکرین کو دستی طور پر کھولنا، زبانیں تبدیل کرنا، آلات تبدیل کرنا — مکمل سیٹ کے لیے تقریباً 60 اعمال درکار ہیں۔ Snapshot پورے عمل کو خودکار بناتا ہے: زبانیں اور آلات تبدیل کرتا ہے، UI ٹیسٹ چلاتا ہے اور App Store کے لیے درست ناموں کے ساتھ اسکرین شاٹس 15 منٹ میں محفوظ کرتا ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں