Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Настройка оповещений о новых сборках в приложении с помощью SDK для распространения приложений

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

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

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

Шаг 1. Включите API тестера распространения приложений

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

  2. В разделе API тестеров приложений Firebase нажмите Включить .

Шаг 2. Добавьте распространение в свое приложение

Мы рекомендуем использовать CocoaPods для установки библиотек Firebase. Однако, если вы не хотите использовать CocoaPods, вы можете напрямую интегрировать фреймворки SDK .

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

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

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

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

    Добавьте схему URL appdistribution-<encoded-google-app-id> , включив фрагмент в файл Info.plist file (инструкции по добавлению схемы URL в Xcode см. В документации Apple ):

    <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 в свой UIApplicationDelegate :

    Swift

    import Firebase
    

    Цель-C

    @import Firebase;
    
  5. Настройте общий экземпляр FirebaseApp , как правило, в методе application:didFinishLaunchingWithOptions: вашего приложения:

    Swift

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

    Цель-C

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

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

Пакет SDK для распространения приложений предоставляет два способа настройки предупреждений о сборке в приложении для ваших тестировщиков: базовая конфигурация предупреждений, которая поставляется с предварительно созданным диалоговым окном входа для отображения для тестировщиков, и расширенная конфигурация предупреждений, которая позволяет вам настроить свой собственный пользовательский интерфейс (UI). Если вы новичок в использовании SDK, мы рекомендуем сначала попробовать базовую конфигурацию предупреждений.

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

Используйте checkForUpdate чтобы отобразить предварительно созданное диалоговое окно включения предупреждений для тестировщиков, которые еще не включили предупреждения, а затем проверьте, доступна ли новая сборка. При вызове метод выполняет следующую последовательность:

  1. Проверяет, активировал ли тестировщик оповещения, предлагая ему войти в App Distribution с помощью своей учетной записи Google.

  2. Если тестер еще не включил предупреждения, отображает предварительно созданный диалог. Включение предупреждений - это однократный процесс на тестовом устройстве, который сохраняется при всех обновлениях вашего приложения. После включения предупреждения остаются включенными на устройстве до тех пор, пока приложение не будет signOutTester или пока не будет signOutTester метод signOutTester (дополнительные сведения об этом расширенном методе настройки см. В справочной документации по распространению приложений для Swift и Objective-C ).

  3. Проверяет наличие новых сборок для установки тестировщика.

Например, следующий код проверяет, что у тестировщика включены предупреждения и есть ли доступ к новой сборке:

Swift

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

Цель-C

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

Обратите внимание, что вы можете включить этот метод в любой момент своего приложения. Например, вы можете предложить своим тестировщикам установить новые доступные сборки при запуске, включив checkForUpdate в viewDidAppear UIViewController .

В следующем примере отображается диалог для тестировщика, когда новая сборка доступна для установки:

Swift

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

Цель-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];
  }
}];

Для получения информации о дополнительных методах см. Справочную документацию по распространению приложений для Swift и Objective-C .

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

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

В следующем примере проверяется, вошел ли уже тестировщик в свою учетную запись тестера распространения приложений Firebase, поэтому вы можете выбрать отображение пользовательского интерфейса входа только для тестировщиков, которые еще не вошли в систему. После входа тестировщика вы можете вызовите checkForUpdate чтобы проверить, есть ли у тестировщика доступ к новой сборке.

Swift

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

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