Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

App Distribution SDK ile uygulama içi yeni derleme uyarıları ayarlayın

İsteğe bağlı Firebase Uygulama Dağıtım SDK'sı, uygulamanızın yeni sürümleri yüklenebilir olduğunda test kullanıcılarınıza uygulama içi uyarılar görüntülemenize olanak tanır. Bu kılavuz, testçileriniz için yeni derleme uyarıları oluşturmak ve özelleştirmek için App Distribution SDK'sının nasıl kullanılacağını açıklar.

Sen başlamadan önce

Zaten yapmadıysanız, iOS projeye Firebase ekleyin .

1. Adım: Uygulama Dağıtım Tester API etkinleştirme

  1. Projenizi seçin Google Bulut Konsolundan .

  2. Firebase App Test API altında, tık etkinleştirin.

2. Adım: uygulamanıza Uygulama Dağıtımı ekle

  1. (Veya çalışma Proje için oluşturulan podfile açın pod init sonra hedef bölümü içinde aşağıdaki satırı ekleyin tane oluşturmak için):

    pod 'Firebase/AppDistribution'
  2. Senin podfile ait dizinde, çalışma pod install sonra, oluşturulan açmak .xcworkspace dosyasını.

  3. (Yalnızca iOS sürümlerinde 9 ve 10 için gerekli) Google uygulama kimliğini kodlayın:

    Google uygulama kimliğinizi kodlayın

    Ekle appdistribution-<encoded-google-app-id> sizin de parçacığını ekleyerek URL şemasını Info.plist file (bkz Apple'ın belgelerinde Xcode URL şeması ekleme ile ilgili talimatlar için):

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

    Ardından, iki nokta üst üste (:) yerine tire (-) koyarak Google uygulama kimliğinizi kodlayın. Google uygulaması Kimliği bulunduğunu Not GoogleService-Info.plist dosyasında. Örneğin, Google uygulama kimliğiniz:

    7:77777777777:ios:123456789

    Kodlanmış Google uygulama kimliğiniz:

    7-77777777777-ios-123456789
  4. Sizin de Firebase modülü içe UIApplicationDelegate :

    Süratli

    import Firebase
    

    Amaç-C

    @import Firebase;
    
  5. Yapılandırma bir FirebaseApp tipik uygulamanızın içinde, örnek paylaşılan application:didFinishLaunchingWithOptions: yöntemi:

    Süratli

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

    Amaç-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. Son olarak, uygulamanızı yeniden derleyin.

3. Adım: Yapılandırma uygulama içi uyarıları

App Distribution SDK, test kullanıcıları için uygulama içi derleme uyarıları ayarlamanın iki yolunu sunar: test kullanıcılarına görüntülenmesi için önceden oluşturulmuş bir oturum açma iletişim kutusuyla birlikte gelen temel bir uyarı yapılandırması ve aşağıdakileri yapmanızı sağlayan gelişmiş bir uyarı yapılandırması. kendi kullanıcı arayüzünüzü (UI) özelleştirin. App Distribution SDK'da yeniyseniz, öncelikle temel uyarı yapılandırmasını kullanmanızı öneririz.

Temel yapılandırma

Kullanım checkForUpdate henüz uyarıları etkinleştirmediğinizden test kullanıcılarına uyarılar diyalogu sağlayan önceden oluşturulmuş görüntüler ve sonra yeni bir yapı mevcut olup olmadığını kontrol etmek. Çağrıldığında, yöntem aşağıdaki sırayı uygular:

  1. Bir test kullanıcısının Google hesaplarıyla Uygulama Dağıtımı'nda oturum açmasını isteyerek uyarıları etkinleştirip etkinleştirmediğini kontrol eder.

  2. Test cihazı henüz uyarıları etkinleştirmediyse, önceden oluşturulmuş bir diyalog görüntüler.

    Uyarıları etkinleştirmek, test cihazında tek seferlik bir işlemdir ve uygulamanızın güncellemeleri boyunca devam eder. Uyarılar ya uygulama kaldırılana kadar test aracı üzerinde etkin kalır veya kadar signOutTester yöntemi olarak adlandırılır. Yöntemin referans belgeleri (Bkz Swift veya Amaç-C daha fazla bilgi için).

  3. Test cihazının yüklemesi için yeni kullanılabilir yapıları kontrol eder.

Sen içerebilir checkForUpdate uygulamanızda herhangi bir noktada. Örneğin, yeni kullanılabilir dahil ederek başlangıçta inşa yüklemek için test isteyebilir checkForUpdate içinde viewDidAppear arasında UIViewController .

Aşağıdaki örnek, test cihazının uyarıları etkinleştirip etkinleştirmediğini ve yeni bir derlemeye erişimi olup olmadığını kontrol eder ve eğer öyleyse, derleme kurulmaya hazır olduğunda bir diyalog görüntüler:

Süratli

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

Amaç-C

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

Gelişmiş yapılandırma

Yöntemler signInTester ve isTesterSignedIn size daha iyi uygulamanızın görünümüne uygun şekilde değiştirmeniz tester oturum açma deneyimi özelleştirme fazla esneklik sağlar.

Aşağıdaki örnek, test kullanıcısının Firebase App Distribution test kullanıcısı hesabında zaten oturum açıp açmadığını kontrol eder, böylece oturum açma kullanıcı arayüzünüzü yalnızca henüz oturum açmamış test kullanıcıları için görüntülemeyi seçebilirsiniz. Test kullanıcısı oturum açtıktan sonra, çağrı checkForUpdate tester yeni yapı erişimi olup olmadığını kontrol etmek.

Süratli

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

Amaç-C

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

Dahil olmak üzere ek yöntemler hakkında bilgi için signOutTester , App Dağıtım referans belgelerine bakın Swift ve Objective-C .

Adım 4: Yapı ve test uygulamanızı

Son olarak, uygulama oluşturmak ve ederek uygulanma biçimini test yapı dağıtarak Firebase konsolunu kullanarak test kullanıcılarına.

Ziyaret Uygulama Dağıtım giderme kılavuzu gibi sık karşılaşılan sorunların, yardım almak için:

  • Test kullanıcısı uygulama içi uyarıları almıyor
  • Test kullanıcısından birden fazla kez Google'da oturum açması isteniyor