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


کیت‌های توسعه نرم‌افزار اختیاری Firebase App Distribution iOS و Android به شما امکان می‌دهند وقتی ساخت‌های جدید برنامه‌تان برای نصب دردسترس قرار می‌گیرد، هشدارهای درون‌برنامه‌ای به آزمایش‌کنندگان نمایش دهید. این راهنما توضیح می‌دهد که چگونه از کیت‌های توسعه نرم‌افزار App Distribution iOS و Android برای ایجاد و سفارشی‌سازی هشدارهای ساخت جدید برای آزمایش‌کنندگان استفاده کنید.

قبل از شروع

اگر قبلاً این کار را نکرده‌اید، Firebase را به پروژه iOS خود اضافه کنید.

مرحله ۱: فعال کردن App Distribution Tester API

  1. پروژه‌تان را در Google Cloud کنسول انتخاب کنید.

  2. در بخش Firebase App Testers API، روی فعال کردن کلیک کنید.

مرحله ۲: افزودن App Distribution به برنامه

  1. «پاد فایل» را که برای پروژه ایجاد کرده‌اید باز کنید (یا pod init را برای ایجاد آن اجرا کنید)، سپس خط زیر را به بخش هدف اضافه کنید:

    pod 'FirebaseAppDistribution'
  2. در فهرست فایل غلاف، pod install را اجرا کنید، سپس فایل .xcworkspace ایجادشده را باز کنید.

  3. واحد Firebase را در ساختار App یا UIApplicationDelegate وارد کنید:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. نمونه مشترک FirebaseApp را در روش application(_:didFinishLaunchingWithOptions:) نماینده برنامه پیکربندی کنید:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. اگر «جایگزینی» غیرفعال است، هر نشانی وب بازشده‌ای را به App Distribution کیت توسعه نرم‌افزار در پیاده‌سازی application(_:open:options:) ارسال کنید:

    Swift

    func application(_ app: UIApplication, 
                     open url: URL,
                     options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
       if AppDistribution.appDistribution().application(application, open: url, options: options) {
          return true
       }
    
       // Handle other non-Firebase URLs here.
    
       return false
    }
    

    Objective-C

    - (BOOL)application:(UIApplication *)app 
                openURL:(NSURL *)url 
                options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
       if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) {
          return YES;
       }
    
       // Handle other non-Firebase URLs here.
    
       return NO;
    }
    
  6. درنهایت، برنامه‌تان را دوباره کامپایل کنید.

مرحله ۳: پیکربندی هشدارهای درون‌برنامه

کیت توسعه نرم‌افزار App Distribution دو روش برای تنظیم هشدارهای ساخت درون‌برنامه‌ای برای آزمایش‌کنندگان شما ارائه می‌دهد: پیکربندی هشدار پایه که با به‌روزرسانی برنامه ازپیش ساخته‌شده و کادرهای ورود به سیستم برای نمایش به آزمایش‌کنندگان ارائه می‌شود، و پیکربندی هشدار پیشرفته که به شما امکان می‌دهد میانای کاربری خودتان را سفارشی‌سازی کنید. اگر با کیت توسعه نرم‌افزار App Distribution آشنایی ندارید، توصیه می‌کنیم ابتدا از پیکربندی هشدار پایه استفاده کنید.

پیکربندی پایه

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

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

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

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

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

هرزمان بخواهید می‌توانید checkForUpdate() را در برنامه‌تان فراخوانی کنید. برای مثال، می‌توانید با افزودن checkForUpdate() به onAppear(perform:) نمای ریشه برنامه‌تان، از آزمونگران بخواهید ساخت‌های جدید دردسترس را در زمان راه‌اندازی نصب کنند.

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

Swift

توجه: این محصول در هدف‌های macOS،‏ Mac Catalyst،‏ tvOS، یا watchOS دردسترس نیست.
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  if error != nil {
      // Handle error
      return
  }

  guard let release = release else {
    return
  }

  // Customize your alerts here.
  let title = "New Version Available"
  let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
  let 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 should be a UIViewController.
  self.present(uialert, animated: true, completion: nil)
})

Objective-C

توجه: این محصول در هدف‌های macOS،‏ Mac Catalyst،‏ tvOS، یا watchOS دردسترس نیست.
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    // Handle error
    return;
  }

  if (release) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
      [[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
    }];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
    [alert addAction:updateAction];
    [alert addAction:cancelAction];
    [self presentViewController:alert animated:YES completion:nil];
  }
}];

پیکربندی پیشرفته

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

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

Swift

توجه: این محصول در هدف‌های macOS،‏ Mac Catalyst،‏ tvOS، یا watchOS دردسترس نیست.
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().signInTester (completion: { error in
    // completion block for signInTester
     if (error != nil) {
       // handle failed sign in
      return
     }
    // handle successful sign in
  })
}

// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
  AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
      // completion block for check for update
  })
}

Objective-C

توجه: این محصول در هدف‌های macOS،‏ Mac Catalyst،‏ tvOS، یا watchOS دردسترس نیست.
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
    signInTesterWithCompletion:^(NSError *_Nullable error) {
      // completion block for signInTester
     if (error) {
       // handle failed sign in
       return;
     }
      // handle successful sign in
  }];
}

// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
  [[FIRAppDistribution appDistribution]
        checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                       NSError *_Nullable error) {
     // completion block for check for update
  }];
}

برای اطلاعات درباره روش‌های دیگر، ازجمله signOutTester()، به مستندات مرجع App Distribution برای Swift و Objective-C مراجعه کنید.

مرحله ۴: ساختن و آزمایش کردن پیاده‌سازی

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

برای دریافت کمک درخصوص مشکلات رایج، مانند موارد زیر، به App Distribution راهنمای عیب‌یابی مراجعه کنید:

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