Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

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

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

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

مرحله 1 : API توزیع برنامه تستر را فعال کنید

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

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

مرحله 2 : توزیع برنامه را به برنامه خود اضافه کنید

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

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

  3. شناسه برنامه Google خود را رمزگذاری کنید ( فقط برای نسخه‌های iOS 9 و 10 لازم است ):

    شناسه برنامه Google خود را رمزگذاری کنید

    طرح URL appdistribution-<encoded-google-app-id> را با قرار دادن قطعه در Info.plist file خود اضافه کنید (برای دستورالعمل‌هایی در مورد نحوه افزودن طرح URL در Xcode به اسناد اپل مراجعه کنید):

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>appdistribution-<encoded-google-app-id></string>
            </array>
        </dict>
    </array>
    

    سپس، شناسه برنامه Google خود را با جایگزین کردن دو نقطه (:) با خط تیره (-) رمزگذاری کنید. توجه داشته باشید که شناسه برنامه Google شما در فایل GoogleService-Info.plist شما قرار دارد. برای مثال، اگر شناسه برنامه Google شما:

    7:77777777777:ios:123456789

    شناسه برنامه Google رمزگذاری شده شما این است:

    7-77777777777-ios-123456789
  4. ماژول Firebase را در ساختار App یا UIApplicationDelegate خود وارد کنید:

    سریع

    import FirebaseCore
    

    هدف-C

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

    سریع

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

    هدف-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. در نهایت، برنامه خود را دوباره کامپایل کنید.

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

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

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

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

  1. بررسی می‌کند که آیا آزمایش‌کننده هشدارها را فعال کرده است یا خیر.

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

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

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

شما می توانید checkForUpdate() را در هر نقطه از برنامه خود فراخوانی کنید. برای مثال، می‌توانید با قرار دادن 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 خود وارد شده است، بنابراین می‌توانید رابط کاربری ورود به سیستم خود را فقط برای آزمایش‌کنندگانی که هنوز وارد سیستم نشده‌اند نمایش داده شود. پس از اینکه آزمایش‌کننده وارد سیستم شد، می‌توانید سپس برای بررسی اینکه آیا تستر به یک بیلد جدید دسترسی دارد یا خیر، 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() ، به مستندات مرجع توزیع برنامه برای Swift و Objective-C مراجعه کنید.

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

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

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

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