Thông báo cho người thử nghiệm về bản dựng mới

SDK Android và SDK Phân phối ứng dụng Firebase (không bắt buộc) cho phép bạn hiển thị cảnh báo trong ứng dụng cho người kiểm thử khi có bản dựng mới của ứng dụng để cài đặt. Hướng dẫn này giải thích cách sử dụng SDK Android và iOS Phân phối ứng dụng để tạo và tuỳ chỉnh thông báo bản dựng mới cho người kiểm thử.

Trước khi bắt đầu

Thêm Firebase vào dự án iOS của bạn nếu bạn chưa thêm.

Bước 1: Bật API Người kiểm tra phân phối ứng dụng

  1. Chọn dự án của bạn trong bảng điều khiển Google Cloud.

  2. Trong API Người kiểm tra ứng dụng Firebase, hãy nhấp vào Bật.

Bước 2: Thêm tính năng Phân phối ứng dụng vào ứng dụng

  1. Mở Podfile mà bạn đã tạo cho dự án (hoặc chạy pod init để tạo một tệp), sau đó thêm dòng sau vào phần mục tiêu:

    pod 'FirebaseAppDistribution'
  2. Trong thư mục của tệp podfile, hãy chạy pod install, sau đó mở tệp .xcworkspace đã tạo.

  3. Nhập mô-đun Firebase trong cấu trúc App hoặc UIApplicationDelegate:

    Swift

    import FirebaseCore
    import FirebaseAppDistribution
    

    Objective-C

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. Định cấu hình một thực thể dùng chung FirebaseApp trong phương thức application(_:didFinishLaunchingWithOptions:) của uỷ quyền ứng dụng:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. Nếu tính năng làm tròn bị tắt, hãy chuyển mọi URL đã mở đến SDK phân phối ứng dụng trong quá trình triển khai 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. Cuối cùng, biên dịch lại ứng dụng của bạn.

Bước 3: Định cấu hình cảnh báo trong ứng dụng

SDK phân phối ứng dụng cung cấp 2 cách để thiết lập cảnh báo bản dựng trong ứng dụng cho người kiểm thử: cấu hình thông báo cơ bản đi kèm với hộp thoại đăng nhập và cập nhật ứng dụng tạo sẵn để hiển thị cho người kiểm thử và cấu hình cảnh báo nâng cao cho phép bạn tuỳ chỉnh giao diện người dùng của riêng mình. Trước tiên, bạn nên sử dụng cấu hình cảnh báo cơ bản nếu mới sử dụng SDK phân phối ứng dụng.

Cấu hình cơ bản

Sử dụng checkForUpdate để cho thấy hộp thoại bật cảnh báo tạo sẵn cho những người kiểm thử chưa bật cảnh báo, sau đó kiểm tra xem có bản dựng mới hay không. Khi được gọi, phương thức này sẽ thực thi trình tự sau đây:

  1. Kiểm tra xem người kiểm thử đã bật cảnh báo hay chưa bằng cách nhắc họ đăng nhập vào tính năng Phân phối ứng dụng bằng Tài khoản Google của họ.

  2. Nếu người kiểm thử chưa bật cảnh báo, hãy hiện một hộp thoại được tạo sẵn.

    Bật cảnh báo là quy trình một lần trên thiết bị thử nghiệm và duy trì qua các lần cập nhật ứng dụng. Cảnh báo vẫn được bật trên thiết bị thử nghiệm cho đến khi ứng dụng được gỡ cài đặt hoặc cho đến khi phương thức signOutTester được gọi. Hãy xem tài liệu tham khảo về phương thức này (Swift hoặc GOAL-C) để biết thêm thông tin.

  3. Kiểm tra các bản dựng mới có để người kiểm thử cài đặt.

Bạn có thể gọi checkForUpdate() bất cứ lúc nào trong ứng dụng. Ví dụ: bạn có thể nhắc người kiểm thử cài đặt các bản dựng mới có sẵn khi khởi động bằng cách đưa checkForUpdate() vào onAppear(perform:) của khung hiển thị gốc của ứng dụng.

Ví dụ sau đây sẽ kiểm tra xem người kiểm thử đã bật cảnh báo và có quyền truy cập vào bản dựng mới hay chưa. Nếu có, sẽ hiển thị một hộp thoại khi bản dựng có thể cài đặt:

Swift

Lưu ý: Sản phẩm này không dành cho các mục tiêu macOS, Mac Catalyst, tvOS hoặc 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

Lưu ý: Sản phẩm này không dành cho các mục tiêu macOS, Mac Catalyst, tvOS hoặc 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];
  }
}];

Cấu hình nâng cao

Các phương thức signInTester()isTesterSignedIn giúp bạn linh hoạt hơn trong việc tuỳ chỉnh trải nghiệm đăng nhập của người kiểm thử, nhờ đó phù hợp hơn với giao diện của ứng dụng.

Ví dụ sau đây sẽ kiểm tra xem người kiểm thử đã đăng nhập vào tài khoản người kiểm thử tính năng Phân phối ứng dụng Firebase hay chưa, vì vậy, bạn có thể chọn chỉ hiển thị giao diện người dùng đăng nhập cho người kiểm thử chưa đăng nhập. Sau khi người kiểm thử đăng nhập, bạn có thể gọi checkForUpdate() để kiểm tra xem người kiểm thử có quyền truy cập vào bản dựng mới hay không.

Swift

Lưu ý: Sản phẩm này không dành cho các mục tiêu macOS, Mac Catalyst, tvOS hoặc 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

Lưu ý: Sản phẩm này không dành cho các mục tiêu macOS, Mac Catalyst, tvOS hoặc 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
  }];
}

Để biết thông tin về các phương thức khác, bao gồm cả signOutTester(), hãy xem tài liệu tham khảo về Phân phối ứng dụng cho SwiftTarget-C.

Bước 4: Xây dựng và thử nghiệm phương thức triển khai

Cuối cùng, hãy tạo bản dựng ứng dụng và kiểm thử kết quả triển khai bằng cách phân phối bản dựng cho người kiểm thử bằng bảng điều khiển của Firebase.

Hãy truy cập Hướng dẫn khắc phục sự cố phân phối ứng dụng để được trợ giúp về các vấn đề thường gặp, chẳng hạn như:

  • Người kiểm thử không nhận được cảnh báo trong ứng dụng
  • Người thử nghiệm được nhắc đăng nhập vào Google nhiều lần