با Firebase App Distribution iOS SDK - Codelab به آزمایش‌کنندگان درباره نسخه‌های جدید برنامه‌تان هشدار دهید

۱. مرور کلی

به بخش ادغام SDK توزیع برنامه Firebase در آزمایشگاه کد برنامه iOS خود خوش آمدید. در این آزمایشگاه کد، SDK توزیع برنامه را به برنامه خود اضافه خواهید کرد تا وقتی نسخه‌های جدید برای دانلود در دسترس هستند، هشدارهای درون برنامه‌ای را به آزمایش‌کنندگان خود نمایش دهید. یاد خواهید گرفت که چگونه از پیکربندی اولیه و پیکربندی سفارشی برای ورود آزمایش‌کنندگان خود برای دریافت به‌روزرسانی‌ها استفاده کنید. سپس یک نسخه جدید را به توزیع برنامه ارسال می‌کنید و یک هشدار ساخت جدید را مستقیماً در برنامه فعال می‌کنید.

آنچه یاد خواهید گرفت

  • نحوه استفاده از توزیع برنامه برای توزیع یک برنامه پیش از انتشار به آزمایش‌کنندگان زنده
  • نحوه ادغام SDK iOS توزیع برنامه در برنامه شما
  • چگونه به یک آزمایش‌کننده هشدار دهیم وقتی یک نسخه پیش‌انتشار جدید آماده نصب است
  • چگونه SDK را متناسب با نیازهای تست منحصر به فرد خود سفارشی کنید

آنچه نیاز دارید

  • Xcode نسخه ۱۲ (یا بالاتر)
  • کوکو پادز ۱.۹.۱ (یا بالاتر)
  • یک حساب توسعه‌دهنده اپل برای توزیع Ad Hoc
  • یک دستگاه فیزیکی iOS برای آزمایش. ( برنامه شبیه‌ساز iOS برای اکثر آزمایشگاه کد کار می‌کند، اما شبیه‌سازها نمی‌توانند نسخه‌های منتشر شده را دانلود کنند.)

چگونه از این آموزش استفاده خواهید کرد؟

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را در ساخت اپلیکیشن‌های iOS چگونه ارزیابی می‌کنید؟

تازه کار متوسط ماهر

۲. ایجاد و راه‌اندازی یک پروژه Firebase

ایجاد یک پروژه جدید فایربیس

  1. با استفاده از حساب گوگل خود وارد کنسول فایربیس شوید.
  2. برای ایجاد یک پروژه جدید، روی دکمه کلیک کنید و سپس نام پروژه را وارد کنید (برای مثال، App Distribution Codelab ).
  3. روی ادامه کلیک کنید.
  4. در صورت درخواست، شرایط Firebase را مرور و قبول کنید و سپس روی ادامه کلیک کنید.
  5. (اختیاری) دستیار هوش مصنوعی را در کنسول Firebase (با نام "Gemini در Firebase") فعال کنید.
  6. برای این codelab، به گوگل آنالیتیکس نیاز ندارید ، بنابراین گزینه گوگل آنالیتیکس را غیرفعال کنید .
  7. روی ایجاد پروژه کلیک کنید، منتظر بمانید تا پروژه شما آماده شود و سپس روی ادامه کلیک کنید.

اضافه کردن یک برنامه به فایربیس

برای ثبت برنامه خود در Firebase، مستندات را دنبال کنید. از "com.google.firebase.codelab.AppDistribution.<your_name>" به عنوان شناسه بسته iOS استفاده کنید.

وقتی از شما خواسته شد، فایل GoogleService-Info.plist پروژه خود را دانلود کنید. بعداً به آن نیاز خواهید داشت.

۳. نمونه پروژه را دریافت کنید

کد را دانلود کنید

با کپی کردن پروژه نمونه شروع کنید.

git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git

اگر گیت را نصب ندارید، می‌توانید پروژه نمونه را از صفحه گیت‌هاب آن یا با کلیک روی این لینک دانلود کنید.

وابستگی‌ها را دانلود کنید و پروژه را در Xcode باز کنید

  1. فایل پادفایل را در همان دایرکتوری باز کنید
cd firebase-appdistribution-ios/start
Open Podfile
  1. خط زیر را به podfile خود اضافه کنید:

پادفایل

pod 'Firebase/AppDistribution'

pod update در دایرکتوری پروژه اجرا کنید و پروژه را در Xcode باز کنید.

pod install --repo-update
xed .

شناسه بسته را برای مطابقت با برنامه Firebase خود به‌روزرسانی کنید

در منوی سمت چپ، روی AppDistributionExample دوبار کلیک کنید. سپس، تب General را پیدا کنید و شناسه بسته را طوری تغییر دهید که با شناسه بسته برنامه Firebase شما که در تنظیمات پروژه یافت می‌شود، مطابقت داشته باشد. این باید "com.google.firebase.codelab.AppDistribution.<your_name>" باشد.

فایربیس را به برنامه خود اضافه کنید

فایل GoogleService-Info.plist را که قبلاً دانلود کرده‌اید، در سیستم فایل خود پیدا کنید و آن را به ریشه پروژه Xcode بکشید (drag) کنید. همچنین می‌توانید این فایل را هر زمان از صفحه تنظیمات پروژه خود دانلود کنید.

3cf9290805e7fdab.png

در فایل AppDistributionExample/AppDelegate.swift خود، Firebase را در بالای فایل وارد کنید.

مثال توزیع برنامه/AppDelegate.swift

import Firebase

و در متد didFinishLaunchingWithOptions یک فراخوانی برای پیکربندی Firebase اضافه کنید.

مثال توزیع برنامه/AppDelegate.swift

FirebaseApp.configure()

۴. هشدارهای ساخت جدید درون برنامه‌ای را با SDK توزیع برنامه تنظیم کنید

در این مرحله، شما SDK توزیع برنامه Firebase را به برنامه خود اضافه خواهید کرد و هنگامی که نسخه‌های جدید برنامه شما برای نصب در دسترس هستند، هشدارهای درون برنامه‌ای را به آزمایش‌کنندگان خود نمایش خواهید داد. برای انجام این کار، مطمئن شوید که API آزمایش‌کنندگان برنامه Firebase را برای پروژه "Firebase Codelab" خود (در کنسول Google Cloud) فعال کرده‌اید. باید با همان حساب کاربری وارد شوید و پروژه صحیح را از منوی کشویی بالا انتخاب کنید.

پیکربندی هشدارهای درون برنامه‌ای

کیت توسعه نرم‌افزار توزیع برنامه (SDK) دو روش برای تنظیم هشدارهای ساخت درون‌برنامه‌ای برای آزمایش‌کنندگان شما ارائه می‌دهد: یک پیکربندی هشدار اولیه، که با یک گفتگوی ورود از پیش ساخته شده برای نمایش به آزمایش‌کنندگان همراه است، و یک پیکربندی هشدار پیشرفته، که به شما امکان می‌دهد رابط کاربری (UI) خود را سفارشی کنید.

ما با پیکربندی اولیه هشدار شروع خواهیم کرد. شما می‌توانید از checkForUpdate برای نمایش یک دیالوگ فعال‌سازی هشدارهای از پیش ساخته شده به آزمایش‌کنندگانی که هنوز هشدارها را فعال نکرده‌اند استفاده کنید و سپس بررسی کنید که آیا نسخه جدیدی در دسترس است یا خیر. آزمایش‌کنندگان با ورود به حسابی که به برنامه در App Distribution دسترسی دارد، هشدارها را فعال می‌کنند. هنگام فراخوانی، این متد توالی زیر را اجرا می‌کند:

  1. بررسی می‌کند که آیا آزمایش‌کننده هشدارها را فعال کرده است یا خیر. در غیر این صورت، یک کادر محاوره‌ای از پیش ساخته شده نمایش داده می‌شود که از آنها می‌خواهد با حساب گوگل خود وارد سیستم توزیع برنامه شوند.

فعال کردن هشدارها یک فرآیند یک‌باره در دستگاه آزمایشی است و در طول به‌روزرسانی‌های برنامه شما ادامه می‌یابد. هشدارها تا زمانی که برنامه حذف نصب نشود یا تا زمانی که متد signOutTester فراخوانی شود، در دستگاه آزمایشی فعال می‌مانند. برای اطلاعات بیشتر به مستندات مرجع متد ( Swift یا Objective-C ) مراجعه کنید.

  1. بررسی می‌کند که آیا نسخه‌های جدید برای نصب توسط آزمایش‌کننده موجود است یا خیر. یک شیء انتشار یا یک خطا را برمی‌گرداند.

شما می‌توانید checkForUpdate در هر نقطه‌ای از برنامه خود اضافه کنید. برای مثال، می‌توانید با اضافه کردن checkForUpdate در viewDidAppear از UIViewController ، از آزمایش‌کنندگان خود بخواهید که نسخه‌های جدید موجود را در هنگام راه‌اندازی نصب کنند.

در فایل AppDistributionViewController.swift خود، Firebase را در بالای فایل وارد کنید.

AppDistributionViewController.swift

import Firebase

فایل AppDistributionExample/AppDistributionViewController.swift را باز کنید و خطوط زیر را در متد viewDidAppear کپی کنید:

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    checkForUpdate()
 }

حالا بیایید متد checkForUpdate() را پیاده‌سازی کنیم.

AppDistributionViewController.swift

  private func checkForUpdate() {
    AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
      var uiAlert: UIAlertController

      if error != nil {
        uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
      } else if release == nil {
        uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
        uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
      } else {
        guard let release = release else { return }

        let title = "New Version Available"
        let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
        uiAlert = UIAlertController(title: title, message: message, preferredStyle: .alert)

        uiAlert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
          _ in
          UIApplication.shared.open(release.downloadURL)
        })
        uiAlert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
          _ in
        })
      }
      self.present(uiAlert, animated: true, completion: nil)
    })
  }

۵. اپلیکیشن خود را بسازید و از آزمایش‌کنندگان دعوت کنید تا آن را دانلود کنند.

در این مرحله، برنامه خود را می‌سازید و پیاده‌سازی آن را با توزیع نسخه ساخته شده بین آزمایش‌کنندگان با استفاده از کنسول Firebase آزمایش خواهید کرد.

اپلیکیشن خود را بسازید

وقتی آماده توزیع نسخه پیش‌انتشار برنامه خود برای آزمایش‌کنندگان شدید، «هر دستگاه iOS (arm64)» را به عنوان مقصد ساخت انتخاب کنید و به مسیر Product->Archive بروید. پس از ایجاد آرشیو، یک توزیع امضا شده با پروفایل توزیع توسعه (Development distribution profile) بسازید.

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

وقتی ساخت کامل شد، یک فایل IPA و چند فایل لاگ در پوشه‌ای که شما مشخص می‌کنید ذخیره می‌شود. شما فایل IPA را در مراحل زیر بین آزمایش‌کنندگان خود توزیع می‌کنید.

اگر در ساخت برنامه خود با مشکل مواجه شدید، برای مراحل عیب‌یابی به اسناد طراحی کد اپل مراجعه کنید.

برنامه خود را بین آزمایش‌کنندگان توزیع کنید

برای توزیع برنامه خود به آزمایش‌کنندگان، فایل IPA را با استفاده از کنسول Firebase آپلود کنید:

  1. صفحه توزیع برنامه (App Distribution) کنسول Firebase را باز کنید. در صورت درخواست، پروژه Firebase خود را انتخاب کنید.
  2. شروع به کار را فشار دهید

e4671bd304ecfe47.png

  1. در صفحه انتشارها، برنامه‌ای را که می‌خواهید توزیع کنید از منوی کشویی انتخاب کنید.

8a3da2939b9746f4.png

  1. فایل IPA برنامه خود را برای آپلود به کنسول بکشید.
  2. وقتی آپلود تمام شد، گروه‌های آزمایش‌کننده و آزمایش‌کنندگان منفردی را که می‌خواهید نسخه آزمایشی را دریافت کنند، مشخص کنید. (ایمیل خود را برای دریافت دعوت‌نامه اضافه کنید.) سپس، یادداشت‌های انتشار نسخه آزمایشی را اضافه کنید. برای اطلاعات بیشتر در مورد ایجاد گروه‌های آزمایش‌کننده، به مدیریت آزمایش‌کنندگان مراجعه کنید.

de63e3c3c64f909e.png

  1. برای اینکه نسخه نهایی در دسترس آزمایش‌کنندگان قرار گیرد، روی «توزیع» کلیک کنید.

b6e75dc216fc3731.png

خودتان را به عنوان آزمایش‌کننده به نسخه اضافه کنید

در کنسول فایربیس، اکنون می‌توانید آزمایش‌کنندگانی را که در نسخه منتشر شده برنامه خود اضافه کرده‌اید، مشاهده کنید.

eb61c6be96ff3a11.png

از آنجایی که آدرس ایمیل خود را وارد کرده‌اید، ایمیلی از Firebase App Distribution دریافت خواهید کرد که از شما دعوت می‌کند تا برنامه را آزمایش کنید. اکنون شما اولین آزمایش‌کننده هستید! برای تنظیم به عنوان آزمایش‌کننده در دستگاه آزمایشی خود، بخش زیر را ادامه دهید.

دستگاه تست خود را ثبت کنید

برای دانلود و آزمایش نسخه Ad Hoc، ابتدا باید دستگاه آزمایشی خود را ثبت کنید.

  1. در دستگاه آزمایشی iOS خود، ایمیل ارسال شده از Firebase App Distribution را باز کنید و روی لینک Get Started ضربه بزنید. حتماً لینک را در Safari باز کنید.
  2. در برنامه وب Firebase App Distribution tester که ظاهر می‌شود، با حساب گوگل خود وارد شوید و روی پذیرش دعوت ضربه بزنید.

4d1af345ef944620.png

حالا، نسخه‌ای که به آن دعوت شده‌اید را خواهید دید.

  1. برای اشتراک‌گذاری UDID خود با Firebase، روی «ثبت دستگاه» ضربه بزنید تا بتوانید بعداً نمایه تأمین برنامه خود را به‌روزرسانی کنید.

fd141215e54a938d.png

  1. دستورالعمل‌ها را دنبال کنید و برای دانلود پروفایل و اشتراک‌گذاری UDID خود به تنظیمات بروید.

حالا، وقتی به بخش توزیع برنامه برگردید، نسخه منتشر شده با عنوان «ثبت‌شده در دستگاه» علامت‌گذاری شده است:

fe93d649dfa25877.png

UDID آزمایش‌کننده اکنون با توسعه‌دهنده به اشتراک گذاشته شده است. اکنون وظیفه توسعه‌دهنده است که نسخه جدیدی از برنامه را برای آزمایش‌کننده بسازد.

مشاهده اطلاعات تستر در کنسول

در نمای توسعه‌دهنده در کنسول Firebase، تستر در زیر نسخه منتشر شده با عنوان "پذیرفته شده" نمایش داده می‌شود:

۱bef6f182c1c58f9.png

اگر دستگاهی که توسعه‌دهنده از آن استفاده می‌کند در پروفایل تأمین‌کننده وجود نداشته باشد، ایمیلی دریافت خواهید کرد. این ایمیل شما را از UDID جدیدی که باید اضافه کنید مطلع می‌کند. همچنین می‌توانید تمام UDIDها را به صورت یک فایل متنی خروجی بگیرید.

  1. برای خروجی گرفتن از همه UDIDها، تب Testers & Groups را باز کنید.

2745d49a6abc47fe.png

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

cb45477f8cc436ba.png

این فایل باید حاوی UDID دستگاه تست شما باشد.

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

وقتی یکی از این ایمیل‌ها را دریافت کردید، نمایه تأمین خود را با UDID به‌روزرسانی کنید و با دنبال کردن این مراحل، یک نسخه جدید را برای آزمایش‌کنندگان خود توزیع کنید:

  1. دستگاه‌ها را به پورتال توسعه‌دهندگان اپل خود اضافه کنید.
  • گزینه ۱: UDID های دستگاه را به صورت فایل CSV وارد کنید. در تب Testers & Groups در داشبورد App Distribution، گزینه All testers را انتخاب کنید، سپس برای دانلود فایل CSV روی Export Apple UDIDs کلیک کنید. در مرحله بعد، فایل را با استفاده از گزینه Register Multiple Devices به حساب توسعه‌دهنده اپل خود وارد کنید. برای کسب اطلاعات بیشتر به مستندات اپل مراجعه کنید. توجه داشته باشید که حساب توسعه‌دهنده اپل شما ممکن است فقط به شما امکان وارد کردن تعداد محدودی دستگاه در سال را بدهد.
  • گزینه ۲: جمع‌آوری و وارد کردن UDIDها از طریق ایمیل. در صفحه افزودن دستگاه‌ها در پورتال توسعه‌دهندگان اپل، UDID جدید مشخص‌شده در ایمیل دریافتی را ثبت کنید.

ffb74294e68ee1c8.png

  1. دستگاه‌های ثبت‌شده را به نمایه تأمین خود اضافه کنید.
  2. پروفایل تأمین را دانلود کنید و از آن برای بازسازی برنامه خود استفاده کنید. اگر فقط برای به‌روزرسانی دستگاه‌های ثبت‌شده در حال بازسازی هستید، شماره ساخت یا نسخه را به‌روزرسانی نکنید.
  3. برنامه خود را از کنسول Firebase یا CLI دوباره توزیع کنید . اگر قبلاً نسخه‌ای با شماره ساخت و نسخه یکسان توزیع کرده‌اید، فقط کاربران دستگاه‌های تازه ثبت‌شده ایمیل‌های اعلان دریافت می‌کنند.

نسخه آزمایشی را از دستگاه تست دانلود کنید

اکنون این نسخه دارای UDID دستگاه آزمایشی است، بنابراین دستگاه آزمایشی می‌تواند برنامه را دانلود و نصب کند. App Distribution هنگامی که UDID آنها به یک نسخه جدید اضافه می‌شود، ایمیلی برای آزمایش‌کنندگان ارسال می‌کند.

a4049260bae2850b.png

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

وقتی به برنامه UDID codelab بروید، می‌توانید ببینید که نسخه آماده دانلود است.

dad6d03b6ad78746.png

  1. اگر از یک دستگاه فیزیکی استفاده می‌کنید، روی دانلود کلیک کنید، سپس برنامه را نصب و اجرا کنید!
  2. وقتی برنامه شروع به کار می‌کند، از شما می‌خواهد که هشدارهای ساخت جدید را فعال کنید. «روشن کردن» را انتخاب کنید.

6e3540a2900734e6.png

  1. سپس از شما خواسته می‌شود که وارد سیستم شوید. روی «ادامه» کلیک کنید.

82d90d7935bfaea0.png

  1. با حساب کاربری تستر خود وارد شوید.

13bee1d03fa94ebf.png

  1. شما به برنامه بازگردانده خواهید شد. دفعه بعد که برنامه را اجرا می‌کنید، نیازی به ورود یا پذیرش هشدارها نخواهید داشت.

815d6757eb5f6327.png

یک به‌روزرسانی را بین آزمایش‌کنندگان خود توزیع کنید

  1. شماره ساخت خود را به "2" به‌روزرسانی کنید.

۸۶۱aa63ebbc6ec54.png

  1. «هر دستگاه iOS (arm64)» را به عنوان مقصد ساخت انتخاب کنید و به مسیر Product->Archive بروید. پس از تولید آرشیو، یک توزیع امضا شده با پروفایل توزیع توسعه (Development distribution profile) بسازید.
  2. وقتی ساخت کامل شد، یک فایل IPA و چند فایل لاگ در پوشه‌ای که شما مشخص می‌کنید ذخیره می‌شود. این IPA جدید را در کنسول Firebase خود آپلود کنید، دوباره ایمیل خود را به عنوان تستر اضافه کنید و توزیع کنید.

b6e75dc216fc3731.png

هشدارهای ساخت آزمایشی

  1. اگر برنامه باز بود، مطمئن شوید که آن را بسته‌اید. برنامه را مجدداً راه‌اندازی کنید.
  2. وقتی برنامه دوباره راه‌اندازی شد، باید هشدار «نسخه جدید موجود است» را دریافت کنید.

3bd532992df458e6.png

  1. برای دریافت آخرین نسخه، روی «به‌روزرسانی» کلیک کنید.
  2. در صفحه بعدی روی «نصب» کلیک کنید.

3a761d8fa4b79d33.png

  1. تبریک می‌گویم! شما توانستید برنامه خود را با هشدارهای داخلی به‌روزرسانی کنید.

۶. ورود به سیستم آزمایش‌کننده را سفارشی کنید

متدهای signInTester/signOutTester و isTesterSignedIn انعطاف‌پذیری بیشتری در سفارشی‌سازی تجربه ورود به سیستم تستر به شما می‌دهند، بنابراین می‌توانند با ظاهر و حس برنامه شما بهتر مطابقت داشته باشند.

مثال زیر بررسی می‌کند که آیا آزمایش‌کننده قبلاً وارد حساب کاربری آزمایش‌کننده‌ی توزیع برنامه‌ی Firebase خود شده است یا خیر، بنابراین می‌توانید رابط کاربری ورود به سیستم خود را فقط برای آزمایش‌کننده‌هایی که هنوز وارد سیستم نشده‌اند نمایش دهید. پس از ورود آزمایش‌کننده، می‌توانید checkForUpdate را فراخوانی کنید تا بررسی کنید که آیا آزمایش‌کننده به نسخه جدید دسترسی دارد یا خیر.

بیایید با کامنت کردن فراخوانی checkForUpdate()، بررسی خودکار به‌روزرسانی‌ها را در viewDidAppea r غیرفعال کنیم.

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    // checkForUpdate()
 }

در عوض، بیایید تابع checkForUpdate() را در تابع checkForUpdateButtonClicked( ) فراخوانی کنیم.

 @objc func checkForUpdateButtonClicked() {
    checkForUpdate()
 }

حال، بیایید متد signInOutButtonClicked() خود را پیاده‌سازی کنیم که در صورت خروج کاربر از سیستم، او را signIn می‌کند، یا در صورت ورود به سیستم، او را signout می‌کند.

AppDistributionViewController.swift

 @objc func signInOutButtonClicked() {
    if isTesterSignedIn() {
      AppDistribution.appDistribution().signOutTester()

      self.configureCheckForUpdateButton()
      self.configureSignInSignOutButton()
      self.configureSignInStatus()

    } else {
      AppDistribution.appDistribution().signInTester(completion: { error in
        if error == nil {
          self.configureCheckForUpdateButton()
          self.configureSignInSignOutButton()
          self.configureSignInStatus()
        } else {
          let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
          uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
            _ in
          })

          self.present(uiAlert, animated: true, completion: nil)
        }
      })
    }
  }

در نهایت، بیایید متد isTesterSignedI n را پیاده‌سازی کنیم.

AppDistributionViewController.swift

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

پیاده‌سازی خود را بسازید و آزمایش کنید

۷. تبریک می‌گویم!

شما ویژگی «نمایش هشدارهای درون برنامه‌ای» را با استفاده از Firebase App Distribution iOS SDK در یک برنامه ایجاد کرده‌اید.

آنچه ما پوشش داده‌ایم

  • توزیع برنامه Firebase
  • هشدارهای جدید توزیع برنامه Firebase برای iOS SDK

مراحل بعدی

اطلاعات بیشتر

سوالی دارید؟

گزارش مشکلات