Уведомлять тестировщиков о новых сборках

Опциональный Firebase App распространения IOS и Android SDK, позволяет отображать в приложении оповещения к тестировщикам, когда новые версии вашего приложения доступны для установки. В этом руководстве объясняется, как использовать App Distribution IOS и Android SDK, чтобы создать и настроить оповещения о новых сборках для тестеров.

Прежде чем вы начнете

Если вы еще не сделали, добавьте Firebase в свой проект IOS .

Шаг 1 : Включить App Distribution Tester API

  1. Выберите проект в Google Cloud Console .

  2. Под Firebase App тестировщиков API , нажмите кнопку Включить .

Шаг 2 : Добавить App Распределение в приложении

  1. Откройте Podfile созданной для проекта (или запуск pod init , чтобы создать), затем добавьте следующую строку в целевом разделе:

    pod 'FirebaseAppDistribution'
  2. В каталоге вашего podfile, запустите POD pod install , затем откройте созданный .xcworkspace файл.

  3. Кодируйте Google идентификатор приложения ( требуется только для IOS версий 9 и 10 ):

    Кодируйте Google идентификатор приложения

    Добавьте appdistribution-<encoded-google-app-id> схему URL, включив фрагмент в вашем Info.plist file (см документации компании Apple для получения инструкций о том , как добавить схему 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 общей экземпляр, как правило , в вашем App Initializer или приложения делегат «s application(_:didFinishLaunchingWithOptions:) метод:

    Быстрый

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

    Цель-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. Наконец, перекомпилировать приложение.

Шаг 3 : Настройка в приложении оповещения

SDK App распространения обеспечивает два способа настройки в приложении предупреждений сборки для тестеров: базовая конфигурация оповещения, которая поставляется с предварительно встроенным обновлением приложения и входом в диалогах для отображения на тестировщик и продвинутая конфигурация оповещения, которая позволяет вы настроить свой собственный пользовательский интерфейс. Мы рекомендуем сначала с помощью базовой конфигурации предупреждения, если вы новичок в SDK App Distribution.

Базовая конфигурация

Использование 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];
  }
}];

Расширенная конфигурация

Методы signInTester() и isTesterSignedIn дают вам большую гибкость настройки входа в вашем тестере опыта, поэтому он может лучше соответствовать внешнему виду вашего приложения и чувствовать.

Следующий пример проверяет, является ли тестер уже подписанные в их тестером Распределение счета Firebase App, так что вы можете выбрать для отображения входа в интерфейс только для тестеров, которые еще не вошли в систему. После того, как тестер вошел в систему, вы можете затем звоните 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 для Swift и Objective-C .

Шаг 4 : Создание и испытание вашей реализации

И, наконец, построить приложение и протестировать реализацию путем распространения сборки для тестеров с помощью консоли Firebase.

Посетите App Distribution Руководства по устранению неисправностей для помощи с общими проблемами, такими как:

  • Тестер не принимает в приложении оповещения
  • Tester быть предложено войти в Google более чем один раз