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


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

قبل از شروع

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

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

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

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

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

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

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

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

    سویفت

    import FirebaseCore
    import FirebaseAppDistribution
    

    هدف-C

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

    سویفت

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

    هدف-C

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

    سویفت

    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
    }
    

    هدف-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. در نهایت، برنامه خود را دوباره کامپایل کنید.

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

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)
})

هدف-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() را فراخوانی کنید.

سویفت

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

هدف-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 مراجعه کنید.

مرحله 4 : پیاده سازی خود را بسازید و آزمایش کنید

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

برای App Distribution در مورد مشکلات رایج، مانند:

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