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


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

قبل از اینکه شروع کنی

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

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

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

  2. در زیر Firebase App Testers API ، روی فعال کردن (Enable) کلیک کنید.

مرحله ۲ : App Distribution به برنامه خود اضافه کنید

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

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

  3. ماژول Firebase را در App struct یا UIApplicationDelegate خود وارد کنید:

    سویفت

    import FirebaseCore
    import FirebaseAppDistribution
    

    هدف-سی

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

    سویفت

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

    هدف-سی

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

    سویفت

    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
    }
    

    هدف-سی

    - (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) دو روش برای تنظیم هشدارهای ساخت درون‌برنامه‌ای برای آزمایش‌کنندگان شما ارائه می‌دهد: یک پیکربندی هشدار اولیه، که با به‌روزرسانی برنامه از پیش ساخته شده و دیالوگ‌های ورود به سیستم برای نمایش به آزمایش‌کنندگان همراه است، و یک پیکربندی هشدار پیشرفته، که به شما امکان می‌دهد رابط کاربری خود را سفارشی کنید. اگر در SDK App Distribution تازه‌کار هستید، توصیه می‌کنیم ابتدا از پیکربندی هشدار اولیه استفاده کنید.

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

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

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

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

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

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

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

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

سویفت

توجه: این محصول برای سیستم‌عامل‌های 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)
})

هدف-سی

توجه: این محصول برای سیستم‌عامل‌های 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() را فراخوانی کنید تا بررسی کنید که آیا آزمایش‌کننده به نسخه جدید دسترسی دارد یا خیر.

سویفت

توجه: این محصول برای سیستم‌عامل‌های 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
  })
}

هدف-سی

توجه: این محصول برای سیستم‌عامل‌های 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 دیدن کنید:

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