۱. قبل از شروع

در این آزمایشگاه کد، یاد خواهید گرفت که چگونه از Firebase App Distribution و افزونه fastlane آن برای توزیع یک برنامه iOS به آزمایشکنندگان، جمعآوری UDIDهای دستگاه آزمایش و ثبت آنها در پروفایل تأمین برنامه خود استفاده کنید، تا بتوانید به سرعت نسخههای Ad Hoc را به دست آزمایشکنندگان برسانید.
آنچه یاد خواهید گرفت
- نحوه آپلود و توزیع یک برنامه iOS پیش از انتشار (Ad Hoc) برای آزمایشکنندگان با استفاده از Firebase App Distribution و fastlane .
- نحوه ثبت نام به عنوان آزمایش کننده و دانلود برنامه توزیع شده روی یک دستگاه آزمایشی.
- نحوه ثبت سریع دستگاههای آزمایشی با خروجی گرفتن از UDIDهای دستگاه آزمایشی با افزونه fastlane در App Distribution.
- چگونه پروفایل تأمین برنامه خود را بهروزرسانی کنید و آن را برای توزیع دوباره بارگذاری کنید.
آنچه نیاز دارید
- یک حساب گوگل
- یک دستگاه اپل با XCode 11.7+ نصب شده
- یک برنامه iOS پیشانتشار Ad Hoc که در Xcode ساخته شده است
- یک حساب کاربری توسعهدهنده اپل پولی
- یک دستگاه فیزیکی iOS برای آزمایش.
برنامه شبیهساز iOS برای بیشتر بخشهای Codelab کار میکند، اما شبیهسازها نمیتوانند نسخههای منتشر شده را دانلود کنند.
همچنان میتوانید با تأیید نمایش دکمه «دانلود» در برنامه وب تستر توزیع برنامه، از صحت تنظیمات اطمینان حاصل کنید.
۲. شروع کنید
راه اندازی فست لین
توزیع برنامه با fastlane ادغام میشود تا شما را قادر سازد توزیع نسخههای پیشانتشار برنامه خود را خودکار کنید. توزیع برنامه با پیکربندی fastlane شما ادغام میشود.
- نصب و راهاندازی فستلین
- در طول راهاندازی،
fastlane initدر دایرکتوری ریشه پروژه خود اجرا کنید و «تنظیم دستی» را انتخاب کنید. زیردایرکتوری به نامfastlaneرا مشاهده خواهید کرد که شاملFastfile،AppfileوPluginfileاست که برای پیکربندی fastlane از آنها استفاده خواهید کرد.
نصب رابط خط فرمان فایربیس
همچنین باید Firebase CLI را نصب کنید. اگر از macOS یا Linux استفاده میکنید، میتوانید دستور cURL زیر را اجرا کنید:
curl -sL https://firebase.tools | bash
اگر از ویندوز استفاده میکنید، دستورالعملهای نصب را برای دریافت یک فایل باینری مستقل یا نصب از طریق npm مطالعه کنید.
پس از نصب رابط خط فرمان (CLI)، اجرای firebase --version باید نسخه 12.0.0 یا بالاتر را گزارش دهد:
$ firebase --version 12.0.0
۳. برنامه خود را با fastlane بسازید
اپلیکیشن خود را بسازید
- چند متغیر سراسری برای fastlane در
./fastlane/Appfile.شناسه برنامه و شناسه اپل خود را نیز وارد کنید:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- اولین خط خود را ایجاد کنید و با اضافه کردن موارد زیر به فایل
./fastlane/Fastfileاز اکشنbuild_appدر fastlane (که با نامgymنیز شناخته میشود) برای ساخت برنامه خود استفاده کنید:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- برنامه خود را برای توزیع امضا کنید.
برای این codelab، شما گواهینامه و پروفایل خود را با استفاده از get_certificates (که با نام cert نیز شناخته میشود) مدیریت خواهید کرد، که گواهینامههای امضا را به صورت محلی تولید میکند و همه چیز را در macOS Keychain شما ذخیره میکند. با این حال، معمولاً میخواهید از sync_code_signing action فستلین (که با نام match نیز شناخته میشود) برای مدیریت ایمن گواهینامهها و پروفایلهای امضای کد تیم خود استفاده کنید.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- با استفاده از اکشن
get_provisioning_profile(که با نامsighنیز شناخته میشود)، یک پروفایل تأمین (provisioning profile) برای برنامه خود تنظیم کنید. این به شما امکان میدهد برنامه خود را با آزمایشکنندگان به اشتراک بگذارید.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [اختیاری] اگر قبلاً برنامه خود را اجرا نکردهاید، دستور زیر را برای ایجاد برنامه خود در کنسول توسعهدهندگان اپل اجرا کنید:
$ fastlane produce --skip_itc
- در نهایت، با اجرای Lane، برنامه خود را بسازید.
از شما خواسته میشود که اپل آیدی، رمز عبور (که در Keychain شما ذخیره شده است) و شناسه بسته برنامه خود را وارد کنید.
$ fastlane build
اگر با هر مشکلی مواجه شدید، لطفاً به راهنمای عیبیابی fastlane مراجعه کنید.
۴. برنامه خود را در Firebase آپلود کنید
حالا که برنامهتان را ساختهاید، آمادهاید تا آن را در App Distribution آپلود کنید.
ایجاد یک پروژه جدید فایربیس
- با استفاده از حساب گوگل خود وارد کنسول فایربیس شوید.
- برای ایجاد یک پروژه جدید، روی دکمه کلیک کنید و سپس نام پروژه را وارد کنید (برای مثال،
UDID Export Codelab). - روی ادامه کلیک کنید.
- در صورت درخواست، شرایط Firebase را مرور و قبول کنید و سپس روی ادامه کلیک کنید.
- (اختیاری) دستیار هوش مصنوعی را در کنسول Firebase (با نام "Gemini در Firebase") فعال کنید.
- برای این codelab، به گوگل آنالیتیکس نیاز ندارید ، بنابراین گزینه گوگل آنالیتیکس را غیرفعال کنید .
- روی ایجاد پروژه کلیک کنید، منتظر بمانید تا پروژه شما آماده شود و سپس روی ادامه کلیک کنید.
برنامه iOS خود را به پروژه اضافه کنید
- برای ایجاد یک برنامه جدید Firebase iOS، روی آیکون iOS کلیک کنید و شناسه بسته برنامه خود را وارد کنید.

- چند مرحله بعدی را رد کنید، سپس روی ادامه کلیک کنید تا کنسول باز شود . بعداً SDK ها را به برنامه خود اضافه خواهید کرد.
پروژه و برنامه شما اکنون در صفحه نمای کلی پروژه در دسترس هستند.

فعال کردن توزیع برنامه
- در بخش انتشار و نظارت، روی توزیع برنامه کلیک کنید.
- پس از پذیرش شرایط، روی «شروع» کلیک کنید تا توزیع برنامه برای برنامه شما فعال شود.

راهاندازی توزیع در فستلین
- دستور زیر را از ریشه پروژه iOS خود اجرا کنید تا App Distribution به پیکربندی fastlane شما اضافه شود.
اگر دستور از شما گزینهای را درخواست کرد، گزینه ۳: RubyGems.org را انتخاب کنید:
$ fastlane add_plugin firebase_app_distribution
- تأیید کنید که افزونه نصب شده است:
$ fastlane
خروجی باید fastlane-plugin-firebase_app_distribution را در لیست افزونههای نصب شده نشان دهد.
- پس از تأیید نصب افزونه، برای لغو، گزینه 0 را انتخاب کنید.
پروژه Firebase خود را تأیید کنید
برای استفاده از افزونه fastlane ، ابتدا پروژه Firebase خود را احراز هویت کنید.
- برای اتصال CLI به حساب گوگل خود، دستور زیر را اجرا کنید:
$ firebase login
- وقتی دستور، لینک احراز هویت را چاپ کرد، لینک را در مرورگر باز کنید.
- وقتی از شما خواسته شد، وارد حساب گوگل خود شوید و اجازه دسترسی به پروژه فایربیس خود را بدهید.
برنامه خود را توزیع کنید
اکنون آماده توزیع برنامه خود هستید.
- در بالای فایل
./fastlane/Fastfileخود، متغیری به نامfirebase_app_idتعریف کنید.<your_app_id>با شناسه برنامه Firebase برنامهای که ایجاد کردهاید جایگزین کنید (این شناسه را میتوانید در صفحه تنظیمات پروژه پیدا کنید).
Fastfile با زبان Ruby نوشته شده است، بنابراین برای تعریف متغیرها از سینتکس Ruby استفاده کنید.
firebase_app_id = "<your_app_id>"
- یک مسیر جدید به نام
distributeاضافه کنید که مسیر ساخت را فراخوانی میکند و سپس برنامه شما را با استفاده از اکشنfirebase_app_distributionتوزیع میکند.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- مسیر جدید را اجرا کنید تا برنامه خود را بسازید و یک توزیع ایجاد کنید.
$ fastlane distribute
در این مرحله، Fastfile شما باید به شکل زیر باشد:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
بعد از اینکه کنسول Firebase را رفرش کردید، نسخه جدید برنامه خود را مشاهده خواهید کرد.

۵. از آزمایشکنندگان دعوت کنید تا برنامه شما را دانلود کنند
وقتی یک آزمایشکننده دعوت برای آزمایش یک نسخهٔ موقت (Ad Hoc) را میپذیرد، از او اجازه گرفته میشود تا UDID خود را به اشتراک بگذارد. در صورت موافقت، App Distribution اطلاعات دستگاه او را جمعآوری کرده و از طریق ایمیل به شما اطلاع میدهد. در این بخش، شما خود را به عنوان یک آزمایشکننده اضافه میکنید تا برنامهای را که توزیع کردهاید دانلود و آزمایش کنید.
خودتان را به عنوان آزمایشکننده به نسخه اضافه کنید
- در بالای Fastfile خود، زیر
firebase_app_id، یک متغیر برای نگهداری تسترها ایجاد کنید و آدرس ایمیل خودتان و همچنین سایر آدرسهای ایمیل اختیاری که میخواهید امتحان کنید را در آن قرار دهید.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- متد Array#join روبی را برای تبدیل آرایه
app_testersبه یک رشته جدا شده با کاما، که پارامترtestersانتظار آن را دارد، اعمال کنید. سپس، نتیجه را به پارامترtestersازfirebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
در این مرحله، Fastfile شما باید به شکل زیر باشد:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- دوباره لاین را طی کن.
$ fastlane distribute
پس از اجرای مسیر، آزمایشکنندگانی که اضافه کردهاید، یک ایمیل دعوت از توزیع برنامه دریافت میکنند که آنها را از انتشار نسخه جدید مطلع میکند. اکنون در کنسول Firebase میتوانید آزمایشکنندگانی را که اضافه کردهاید، در زیر نسخه برنامه خود مشاهده کنید.

از آنجایی که آدرس ایمیل خود را وارد کردهاید، ایمیلی از Firebase App Distribution دریافت خواهید کرد که از شما دعوت میکند تا برنامه را آزمایش کنید. اکنون شما اولین آزمایشکننده هستید! برای تنظیم به عنوان آزمایشکننده در دستگاه آزمایشی خود، بخش زیر را ادامه دهید.
دستگاه تست خود را ثبت کنید
به عنوان یک آزمایشکننده، برای دسترسی به نسخههای آزمایشی برنامه که برای آزمایش به آنها دعوت شدهاید، باید در دستگاه آزمایشی خود وارد حساب گوگل خود شوید. از آنجا که نسخه آزمایشی شما یک نسخه موقت است، باید دستگاه آزمایشی خود را نیز با نصب پروفایل Firebase ثبت کنید. پس از آن، نسخههایی که برای شما در دسترس قرار میگیرند، میتوانند از طریق برنامه وب آزمایشکننده توزیع برنامه، با استفاده از کلیپ وب که به صفحه اصلی دستگاه شما اضافه شده است، قابل دسترسی باشند.
- در دستگاه آزمایشی iOS خود، ایمیل ارسال شده از Firebase App Distribution را باز کنید و روی لینک Get Started ضربه بزنید. حتماً لینک را در Safari باز کنید.
- اکنون در برنامه وب تستر توزیع برنامه هستید. در صفحهای که ظاهر میشود، با حساب گوگل خود وارد شوید و روی پذیرش دعوت ضربه بزنید.

- اکنون میتوانید نسخههایی را که به آنها دعوت شدهاید مشاهده کنید. در زیر یکی از نسخهها، روی «ثبت دستگاه» ضربه بزنید.

- وقتی از شما خواسته شد، پروفایل Firebase را دانلود کنید، سپس آن را در برنامه تنظیمات نصب کنید.
نصب پروفایل به Firebase اجازه میدهد تا:
- دستگاه آزمایشی را با جمعآوری شناسه منحصر به فرد دستگاه (UDID) ثبت کنید.
فایربیس به همه مالکان و ویراستاران پروژه فایربیس ایمیلی ارسال میکند که شامل UDID دستگاه آزمایشی است.
- یک کلیپ وب را روی صفحه اصلی دستگاه آزمایشی نصب کنید. کلیپ وب، برنامه وب تستر توزیع برنامه را باز میکند که به شما امکان میدهد تمام برنامههای آزمایشی خود را نصب و به آنها دسترسی داشته باشید.
در برنامه وب تستر توزیع برنامه، دستگاه آزمایشی شما اکنون برای انتشار برنامه ثبت شده است.

حالا که UDID دستگاه آزمایشی خود را با Firebase به اشتراک گذاشتهاید، میتوانید به عنوان یک توسعهدهنده به کار خود ادامه دهید. در تب Testers در داشبورد App Distribution ، اطلاعات Tester شما اکنون در زیر نسخه منتشر شده برنامه با وضعیت "Accepted" نمایش داده میشود:

در بخش بعدی، UDID دستگاه را به پروفایل تأمین برنامه خود اضافه میکنید و سپس نسخهای از برنامه خود را میسازید که با دستگاه آزمایشی شما کار کند.
UDID های دستگاه تستر خود را صادر کنید
به عنوان توسعهدهنده، ایمیلی از فایربیس دریافت خواهید کرد که حاوی UDID دستگاه آزمایشی است. به عنوان یک گزینه، App Distribution با امکان استخراج مستقیم UDIDهای چندین دستگاه جدید از کنسول فایربیس به عنوان یک فایل متنی خام، جمعآوری همزمان آنها را آسان میکند.
- برای خروجی گرفتن از همه UDIDها، تب Testers & Groups را باز کنید.

- روی «صادر کردن UDIDهای اپل» کلیک کنید.

این فایل باید حاوی UDID دستگاه تست شما باشد.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
UDID ها همچنین میتوانند از خط فرمان با استفاده از fastlane استخراج شوند، که در بخش بعدی انجام خواهید داد.
۶. نمایه تأمین برنامه خود را بهروزرسانی کنید و آن را از نو بسازید
اکنون، UDID دستگاه آزمایشی خود را به پروفایل تأمین برنامه خود اضافه میکنید، نسخهای از برنامه خود را که برای دستگاه شما کار میکند، بازسازی میکنید و نسخه جدید را توزیع میکنید.
اضافه کردن مسیر خروجی UDID
- یک متغیر دیگر را در بالای Fastfile خود اضافه کنید و آن را روی مسیر فایلی تنظیم کنید که UDID های دستگاه آزمایش کنندگان شما در آن دانلود شوند.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- یک مسیر جدید راهاندازی کنید که از اکشن اکسپورت UDID افزونهی App Distribution برای دانلود UDIDهای تستر استفاده کند، درست مانند کاری که از کنسول انجام دادید.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- برای دانلود UDID ها، مسیر زیر را اجرا کنید.
$ fastlane download_udids
- فایل دانلود شده را که باید حاوی UDID های دستگاه تست باشد، چاپ کنید.
$ cat tester_udids.txt
دستگاههای dd به کنسول توسعهدهندگان اپل
- برای اضافه کردن UDID ها به لیست دستگاه های خود در کنسول توسعه دهندگان اپل، مسیر زیر را ایجاد کنید تا بتوانید آنها را با استفاده از اکشن
register_devicesدر fastlane به پروفایل تامین خود اضافه کنید:
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- سپس، مسیر را اجرا کنید:
$ fastlane add_new_devices
سپس باید دستگاههای جدید را در لیست دستگاههای کنسول توسعهدهندگان خود مشاهده کنید.
دستگاهها را به نمایه تأمین خود اضافه کنید
- آرگومان
forceرا به مرحلهی provisioning profile در خطbuildخود اضافه کنید تا آن را مجبور کنید هر بار که میسازید، دستگاههای جدید را انتخاب کند.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
برای ساخت و آپلود، مسیر را دوباره اجرا کنید
اکنون، مسیر distribute خود را با مسیرهای جدید بهروزرسانی میکنید تا دستگاهها را به نمایه تأمین اضافه کنید، برنامه را مجدداً بسازید و سپس آن را توزیع کنید.
- خطوط جدید را از
distributeفراخوانی کنید:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- مسیر
distributeرا اجرا کنید:
$ fastlane distribute
در این مرحله، Fastfile شما باید به شکل زیر باشد:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
نسخه آزمایشی را از دستگاه تست دانلود کنید
اکنون که برنامه شما شامل UDID های دستگاه تست است، میتوان آنها را روی دستگاههای تست نصب کرد.

- در دستگاه آزمایشی خود، با استفاده از لینک موجود در ایمیل یا نماد روی صفحه اصلی دستگاه، به برنامه وب تستر توزیع برنامه برگردید.
وقتی به برنامه UDID codelab بروید، میتوانید ببینید که نسخه آماده دانلود است.

- اگر از یک دستگاه فیزیکی استفاده میکنید، روی دانلود کلیک کنید، سپس برنامه را نصب و اجرا کنید!
۷. تبریک
اکنون App Distribution و fastlane را برای خودکارسازی فرآیند تست پیش از انتشار پیکربندی کردهاید. اکنون، وقتی میخواهید آزمایشکنندگان بیشتری را دعوت کنید یا UDID های آنها را به برنامه خود اضافه کنید، فقط باید یک دستور را اجرا کنید: fastlane distribute .
بنابراین دیگر نیازی به جمعآوری جداگانه UDIDها از آزمایشکنندگان یا مراجعه به کنسول توسعهدهندگان اپل برای بهروزرسانی لیست دستگاهها یا آمادهسازی پروفایلها نیست. حتی نیازی به باز کردن XCode هم ندارید!
این گردش کار به راحتی قابل تنظیم است تا به صورت ساعتی یا روزانه در محیط ادغام مداوم شما اجرا شود.
مطالعه بیشتر
- ویژگیهای توزیع برنامه Firebase ، از جمله SDK درون برنامهای ما برای iOS را بررسی کنید.
- درباره فستلین بیشتر بدانید
- امضای کد تیم خود را با
matchمدیریت کنید - فستلین را در CI خود ادغام کنید