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


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

قبل از شروع

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

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

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

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

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

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

    pod 'FirebaseAppDistribution'
  2. در دایرکتوری podfile،‏ 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. اگر swizzling غیرفعال است، هر نشانی وب بازشده‌ای را به App Distribution SDK در پیاده‌سازی 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 SDK دو روش برای راه‌اندازی هشدارهای ساخت درون‌برنامه برای آزمایش‌کنندگان شما ارائه می‌دهد: پیکربندی هشدار پایه، که با به‌روزرسانی برنامه ازپیش‌ساخته‌شده و گفتگوهای ورود به سیستم برای نمایش به آزمایش‌کنندگان همراه است، و پیکربندی هشدار پیشرفته، که به شما امکان می‌دهد میانای کاربر خود را سفارشی‌سازی کنید. اگر با کیت توسعه نرم‌افزار App Distribution آشنایی ندارید، توصیه می‌کنیم ابتدا از پیکربندی هشدار پایه استفاده کنید.

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

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

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

  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 وارد شود