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


کیت‌های توسعه نرم‌افزاری 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 وارد شود
،


کیت‌های توسعه نرم‌افزاری 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 وارد شود
،


کیت‌های توسعه نرم‌افزاری 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 شود
،


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

قبل از شروع

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

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

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

  2. در زیر API API APP Firebase ، روی Enable کلیک کنید.

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

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

    pod 'FirebaseAppDistribution'
  2. در دایرکتوری Podfile خود ، 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 باز شده را به برنامه SDK App Distribution در اجرای 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 دو روش برای تنظیم هشدارهای ساخت درون برنامه برای آزمایش کنندگان شما فراهم می کند: یک پیکربندی اساسی هشدار ، که همراه با به روزرسانی برنامه از پیش ساخته و دیالوگ های ورود به سیستم برای نمایش به آزمایش کنندگان و پیکربندی پیشرفته هشدار است ، شما باید رابط کاربری خود را سفارشی کنید. اگر تازه وارد App Distribution SDK هستید ، ابتدا از پیکربندی هشدار اساسی استفاده می کنیم.

پیکربندی اصلی

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

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

  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];
  }
}];

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

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

مثال زیر بررسی می کند که آیا تستر قبلاً وارد حساب تستر Firebase App Distribution خود شده است ، بنابراین می توانید UI ورود به سیستم خود را فقط برای آزمایش کننده هایی که هنوز وارد سیستم نشده اند ، انتخاب کنید. برای بررسی اینکه آیا تست کننده به ساخت جدید دسترسی دارد ، 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 شود