Siapkan lansiran build baru dalam aplikasi dengan App Distribution SDK

Firebase App Distribution SDK opsional memungkinkan Anda menampilkan lansiran dalam aplikasi kepada penguji saat build baru aplikasi Anda tersedia untuk dipasang. Panduan ini menjelaskan cara menggunakan App Distribution SDK untuk membuat dan menyesuaikan lansiran build baru untuk penguji Anda.

Sebelum kamu memulai

Jika Anda belum melakukannya, tambahkan Firebase ke proyek iOS Anda .

Langkah 1 : Aktifkan API Penguji Distribusi Aplikasi

  1. Pilih proyek Anda di Google Cloud Console .

  2. Di bawah API Penguji Aplikasi Firebase , klik Aktifkan .

Langkah 2 : Tambahkan Distribusi Aplikasi ke aplikasi Anda

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan proyek aplikasi Anda terbuka, navigasikan ke File > Swift Packages > Add Package Dependency .
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Pilih perpustakaan Distribusi Aplikasi.
  5. Setelah selesai, Xcode akan secara otomatis mulai menyelesaikan dan mengunduh dependensi Anda di latar belakang.

Selanjutnya, lakukan beberapa langkah konfigurasi:

  1. Enkode ID aplikasi Google Anda ( hanya diperlukan untuk iOS versi 9 dan 10 ):

    Enkode ID aplikasi Google Anda

    Tambahkan skema URL appdistribution-<encoded-google-app-id> dengan menyertakan cuplikan di Info.plist file Anda (lihat dokumentasi Apple untuk petunjuk tentang cara menambahkan skema URL di 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>
    

    Kemudian, encode ID aplikasi Google Anda dengan mengganti titik dua (:) dengan tanda hubung (-). Perhatikan bahwa ID aplikasi Google Anda terletak di file GoogleService-Info.plist Anda. Misalnya, jika ID aplikasi Google Anda adalah:

    7:77777777777:ios:123456789

    ID aplikasi Google Anda yang disandikan adalah:

    7-77777777777-ios-123456789
  2. Impor modul Firebase di UIApplicationDelegate Anda :

    Cepat

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.

    import Firebase
    

    Objective-C

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.

    @import Firebase;
    
  3. Konfigurasikan instance bersama FirebaseApp , biasanya di aplikasi application:didFinishLaunchingWithOptions: metode:

    Cepat

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.

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

    Objective-C

    Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. Terakhir, kompilasi ulang aplikasi Anda.

Langkah 3 : Konfigurasikan peringatan dalam aplikasi

App Distribution SDK menyediakan dua cara menyiapkan lansiran build dalam aplikasi untuk penguji Anda: konfigurasi lansiran dasar, yang dilengkapi dengan dialog masuk bawaan untuk ditampilkan kepada penguji, dan konfigurasi lansiran lanjutan, yang memungkinkan Anda untuk sesuaikan antarmuka pengguna (UI) Anda sendiri. Sebaiknya gunakan konfigurasi lansiran dasar terlebih dahulu jika Anda baru menggunakan App Distribution SDK.

Konfigurasi dasar

Gunakan checkForUpdate untuk menampilkan dialog aktifkan lansiran yang sudah dibuat sebelumnya kepada penguji yang belum mengaktifkan lansiran, lalu periksa apakah build baru tersedia. Saat dipanggil, metode memberlakukan urutan berikut:

  1. Memeriksa apakah penguji telah mengaktifkan lansiran dengan meminta mereka masuk ke App Distribution dengan akun Google mereka.

  2. Jika penguji belum mengaktifkan lansiran, menampilkan dialog yang dibuat sebelumnya.

    Mengaktifkan lansiran adalah proses satu kali pada perangkat uji dan terus berlanjut di seluruh pembaruan aplikasi Anda. Peringatan tetap diaktifkan pada perangkat uji hingga aplikasi dicopot pemasangannya, atau hingga metode signOutTester dipanggil. Lihat dokumentasi referensi metode ( Swift atau Objective-C ) untuk informasi lebih lanjut.

  3. Memeriksa build yang baru tersedia untuk dipasang oleh penguji.

Anda dapat menyertakan checkForUpdate kapan saja di aplikasi Anda. Misalnya, Anda dapat meminta penguji untuk menginstal build yang baru tersedia saat startup dengan menyertakan checkForUpdate di viewDidAppear dari UIViewController .

Contoh berikut memeriksa apakah penguji telah mengaktifkan peringatan dan memiliki akses ke build baru, dan jika demikian, menampilkan dialog saat build tersedia untuk dipasang:

Cepat

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  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

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau watchOS.
[[FIRAppDistribution appDistribution]
  checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                 NSError *_Nullable error) {
  if (error) {
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];

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

Konfigurasi lanjutan

Metode signInTester dan isTesterSignedIn memberi Anda lebih banyak fleksibilitas dalam menyesuaikan pengalaman masuk penguji, sehingga lebih cocok dengan tampilan dan nuansa aplikasi Anda.

Contoh berikut memeriksa apakah penguji telah masuk ke akun penguji Firebase App Distribution, sehingga Anda dapat memilih untuk menampilkan UI masuk hanya untuk penguji yang belum masuk. Setelah penguji masuk, Anda dapat panggil checkForUpdate untuk memeriksa apakah penguji memiliki akses ke build baru.

Cepat

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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

Catatan: Produk ini tidak tersedia di target macOS, Mac Catalyst, tvOS, atau 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
  }];
}

Untuk informasi tentang metode tambahan, termasuk signOutTester , lihat dokumentasi referensi Distribusi Aplikasi untuk Swift dan Objective-C .

Langkah 4 : Bangun dan uji implementasi Anda

Terakhir, buat aplikasi Anda dan uji implementasi Anda dengan mendistribusikan build ke penguji menggunakan Firebase console.

Kunjungi panduan Pemecahan Masalah Distribusi Aplikasi untuk mendapatkan bantuan terkait masalah umum, seperti:

  • Penguji tidak menerima peringatan dalam aplikasi
  • Penguji diminta untuk masuk ke Google lebih dari sekali