Оповещайте тестировщиков о новых выпусках приложений с помощью Firebase App Distribution iOS SDK - Codelab

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

1. Обзор

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

Что вы узнаете

  • Как использовать App Distribution для распространения предварительной версии приложения среди активных тестировщиков
  • Как интегрировать App Distribution iOS SDK в ваше приложение
  • Как предупредить тестировщика, когда есть новая предварительная сборка, готовая к установке
  • Как настроить SDK в соответствии с вашими уникальными потребностями тестирования

Что вам понадобится

  • Xcode 12 (или выше)
  • CocoaPods 1.9.1 (или выше)
  • Учетная запись разработчика Apple для распространения Ad Hoc
  • Физическое устройство iOS для тестирования. (Приложение iOS-симулятора будет работать для большей части лаборатории кода, но симуляторы не могут загружать выпуски.)

Как вы будете использовать этот учебник?

Прочитайте только это Прочтите его и выполните упражнения

Как бы вы оценили свой опыт создания приложений для iOS?

Новичок Средний Опытный

2. Создайте проект консоли Firebase

Добавить новый проект Firebase

  1. Войдите в Firebase.
  2. В консоли Firebase нажмите «Добавить проект», а затем назовите свой проект «Firebase Codelab».

Вам не нужно включать Google Analytics для этого проекта.

  1. Щелкните Создать проект .

Добавить приложение в Firebase

Следуйте документации , чтобы зарегистрировать свое приложение в Firebase. Используйте "com.google.firebase.codelab.AppDistribution.<ваше_имя>" в качестве идентификатора пакета iOS.

При появлении запроса загрузите файл GoogleService-Info.plist вашего проекта. Это понадобится вам позже.

3. Получите пример проекта

Скачать код

Начните с клонирования примера проекта.

git clone git@github.com:googlecodelabs/firebase-appdistribution-ios.git

Если у вас не установлен git, вы также можете скачать образец проекта с его страницы GitHub или перейдя по этой ссылке .

Загрузите зависимости и откройте проект в Xcode

  1. Откройте Podfile в том же каталоге
cd firebase-appdistribution-ios/start
Open Podfile
  1. Добавьте следующую строку в ваш подфайл:

Подфайл

pod 'Firebase/AppDistribution'

Запустите pod update в каталоге проекта и откройте проект в Xcode.

pod install --repo-update
xed .

Обновите идентификатор пакета, чтобы он соответствовал вашему приложению Firebase.

В левом меню дважды щелкните AppDistributionExample. Затем перейдите на вкладку « Общие » и измените идентификатор пакета, чтобы он соответствовал идентификатору пакета вашего приложения Firebase, который можно найти в настройках проекта . Это должно быть "com.google.firebase.codelab.AppDistribution.<your_name>"

Добавьте Firebase в свое приложение

Найдите файл GoogleService-Info.plist , который вы скачали ранее, в своей файловой системе и перетащите его в корень проекта Xcode. Вы также можете скачать этот файл в любое время со страницы настроек вашего проекта.

3cf9290805e7fdab.png

В вашем AppDistributionExample/AppDelegate.swift импортируйте Firebase в верхней части файла.

AppDistributionExample/AppDelegate.swift

import Firebase

А в метод didFinishLaunchingWithOptions добавить вызов для настройки Firebase.

AppDistributionExample/AppDelegate.swift

FirebaseApp.configure()

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

На этом шаге вы добавите Firebase App Distribution SDK в свое приложение и отобразите оповещения в приложении для своих тестировщиков, когда новые сборки вашего приложения будут доступны для установки. Для этого убедитесь, что вы включили Firebase App Testers API для своего проекта Firebase Codelab (в Google Cloud Console). Вам нужно будет войти в систему с той же учетной записью и выбрать правильный проект из раскрывающегося меню вверху.

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

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

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

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

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

  1. Проверяет наличие новых доступных сборок для установки тестером. Возвращает объект релиза или ошибку .

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

В вашем файле AppDistributionViewController.swift импортируйте Firebase в верхней части файла.

AppDistributionViewController.swift

import Firebase

Откройте AppDistributionExample/AppDistributionViewController.swift и скопируйте строки в метод viewDidAppear следующим образом:

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    checkForUpdate()
 }

Теперь давайте реализуем метод checkForUpdate().

AppDistributionViewController.swift

  private func checkForUpdate() {
    AppDistribution.appDistribution().checkForUpdate(completion: { [self] release, error in
      var uiAlert: UIAlertController

      if error != nil {
        uiAlert = UIAlertController(title: "Error", message: "Error Checking for update! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
      } else if release == nil {
        uiAlert = UIAlertController(title: "Check for Update", message: "No releases found!!", preferredStyle: .alert)
        uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default))
      } else {
        guard let release = release else { return }

        let title = "New Version Available"
        let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
        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.present(uiAlert, animated: true, completion: nil)
    })
  }

5. Создавайте и приглашайте тестировщиков для загрузки вашего приложения

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

Создайте свое приложение

Когда вы будете готовы распространить предварительную версию своего приложения среди тестировщиков, выберите «Любое устройство iOS (arm64)» в качестве места сборки и нажмите «Продукт» -> «Архив». После создания архива создайте подписанный дистрибутив с профилем разрабатываемого дистрибутива.

98d8eb042c36a685.png

b2e9ccff91d761c1.png

8e815564f64d2d39.png

Когда сборка завершается, она сохраняет файл IPA и некоторые файлы журналов в указанной вами папке. Вы распространяете файл IPA среди тестировщиков, выполняя следующие шаги.

Если у вас возникнут проблемы при создании приложения, см . инструкции Apple по разработке кода , чтобы узнать, как устранить неполадки.

Распространите свое приложение среди тестировщиков

Чтобы распространить свое приложение среди тестировщиков, загрузите файл IPA с помощью консоли Firebase:

  1. Откройте страницу распространения приложений в консоли Firebase. При появлении запроса выберите свой проект Firebase.
  2. Нажмите «Начать »

e4671bd304ecfe47.png

  1. На странице Релизы выберите приложение, которое хотите распространять, из раскрывающегося меню.

8a3da2939b9746f4.png

  1. Перетащите файл IPA вашего приложения на консоль, чтобы загрузить его.
  2. Когда загрузка завершится, укажите группы тестировщиков и отдельных тестировщиков, которым вы хотите получить сборку. (Добавьте свой адрес электронной почты, чтобы получить приглашение.) Затем добавьте примечания к выпуску для сборки. Дополнительные сведения о создании групп тестировщиков см. в разделе Управление тестировщиками .

de63e3c3c64f909e.png

  1. Щелкните Распространить, чтобы сделать сборку доступной для тестировщиков.

b6e75dc216fc3731.png

Добавьте себя в качестве тестировщика в релиз

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

eb61c6be96ff3a11.png

Поскольку вы указали свой адрес электронной почты, вы получите электронное письмо от Firebase App Distribution с приглашением протестировать приложение. Теперь ты первый тестировщик! Перейдите к разделу ниже, чтобы настроить тестовое устройство в качестве тестера.

Зарегистрируйте тестовое устройство

Вам нужно сначала зарегистрировать тестовое устройство, чтобы загрузить и протестировать выпуск Ad Hoc.

  1. На тестовом устройстве iOS откройте электронное письмо, отправленное из службы распространения приложений Firebase, и коснитесь ссылки «Начать». Обязательно откройте ссылку в Safari.
  2. В появившемся веб-приложении Firebase App Distribution test войдите в свою учетную запись Google и нажмите Принять приглашение.

4d1af345ef944620.png

Теперь вы увидите выпуск, на который вас пригласили.

  1. Нажмите « Зарегистрировать устройство », чтобы поделиться своим UDID с Firebase, чтобы вы могли позже обновить профиль подготовки вашего приложения.

fd141215e54a938d.png

  1. Следуйте инструкциям и перейдите в настройки, чтобы загрузить профиль и поделиться своим UDID.

Теперь, когда вы вернетесь в App Distribution, выпуск теперь помечен как «Устройство зарегистрировано»:

fe93d649dfa25877.png

UDID тестировщика теперь передан разработчику. Теперь разработчик должен создать тестировщику новую версию приложения.

Просмотр информации о тестере в консоли

Вернувшись в представление разработчика в консоли Firebase, тестер будет отображаться как «Принято» под выпуском:

1bef6f182c1c58f9.png

Затем вы также получите электронное письмо как разработчик, если используемое им устройство еще не включено в профиль подготовки. Это уведомит вас о новом UDID, который необходимо добавить. У вас также есть возможность экспортировать все UDID в виде текстового файла.

  1. Чтобы экспортировать все UDID, откройте вкладку Testers & Groups.

2745d49a6abc47fe.png

  1. Нажмите «Экспортировать идентификаторы Apple UDID».

cb45477f8cc436ba.png

Файл должен содержать UDID вашего тестового устройства.

Device ID            Device Name                            Device Platform
1234567890     tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen        ios

Когда вы получите одно из этих писем, обновите свой профиль обеспечения с помощью UDID и распространите новую сборку среди тестировщиков, выполнив следующие действия:

  1. Добавьте устройства на свой портал разработчиков Apple.
  • Вариант 1. Импортируйте UDID устройств в виде CSV-файла. На вкладке «Тестеры и группы» панели управления распространением приложений выберите «Все тестировщики», затем нажмите «Экспортировать идентификаторы Apple UDID», чтобы загрузить файл CSV. Затем импортируйте файл в свою учетную запись разработчика Apple, используя параметр «Зарегистрировать несколько устройств». Обратитесь к документации Apple, чтобы узнать больше. Обратите внимание, что ваша учетная запись разработчика Apple может разрешать вам импортировать только ограниченное количество устройств в год.
  • Вариант 2: Соберите и введите UDID по электронной почте. На странице « Добавить устройства » портала разработчиков Apple зарегистрируйте новый UDID, указанный в полученном электронном письме.

ffb74294e68ee1c8.png

  1. Добавьте зарегистрированные устройства в свой профиль обеспечения .
  2. Загрузите профиль подготовки и используйте его для перестроения приложения. Если вы выполняете перестройку только для обновления зарегистрированных устройств, не обновляйте номер сборки или версию.
  3. Повторно распространяйте свое приложение из консоли Firebase или интерфейса командной строки. Если вы уже распространили сборку с тем же номером сборки и версией, уведомления по электронной почте будут получать только пользователи вновь зарегистрированных устройств.

Скачать релиз с тестового устройства

Теперь в выпуске есть UDID тестового устройства, поэтому тестовое устройство может загрузить и установить приложение. App Distribution отправляет электронное письмо тестировщикам, когда их UDID добавляется в новую версию.

a4049260bae2850b.png

  1. На тестовом устройстве вернитесь в веб-приложение тестера распространения приложений, используя ссылку в электронном письме или значок на главном экране устройства.

Когда вы перейдете к приложению кодовой лаборатории UDID, вы увидите, что выпуск готов к загрузке.

папа6d03b6ad78746.png

  1. Если вы используете физическое устройство, нажмите «Загрузить», затем установите и запустите приложение!
  2. Когда приложение запустится, оно попросит вас включить оповещения о новых сборках. Выберите «Включить»

6e3540a2900734e6.png

  1. Затем он попросит вас войти в систему. Нажмите «Продолжить».

82d90d7935bfaea0.png

  1. Войдите в свою учетную запись тестера.

13bee1d03fa94ebf.png

  1. Вы вернетесь в приложение. Вам не нужно будет входить в систему или принимать оповещения при следующем запуске приложения.

815d6757eb5f6327.png

Распространите обновление среди тестировщиков

  1. Обновите номер сборки до «2».

861aa63ebbc6ec54.png

  1. Выберите «Любое устройство iOS (arm64)» в качестве места сборки и выберите «Продукт» -> «Архив». После создания архива создайте подписанный дистрибутив с профилем дистрибутива для разработчиков.
  2. Когда сборка завершается, она сохраняет файл IPA и некоторые файлы журналов в указанной вами папке. Загрузите этот новый IPA в свою консоль Firebase, снова добавьте свою электронную почту в качестве тестера и распространите.

b6e75dc216fc3731.png

Оповещения о тестовой сборке

  1. Убедитесь, что вы закрыли приложение, если оно было открыто. Перезапустите приложение.
  2. Когда приложение перезапустится, вы должны получить предупреждение «Доступна новая версия».

3bd532992df458e6.png

  1. Нажмите «Обновить», чтобы получить последнюю версию.
  2. Нажмите «Установить» на следующем экране.

3a761d8fa4b79d33.png

  1. Поздравляем! Вы смогли обновить свое приложение с помощью встроенных предупреждений.

6. Настройте вход тестировщика

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

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

Давайте отключим автоматическую проверку обновлений в viewDidAppear , закомментировав вызов checkForUpdate() .

AppDistributionViewController.swift

 override func viewDidAppear(_ animated: Bool) {
    // checkForUpdate()
 }

Вместо этого давайте вызовем функцию checkForUpdate() в функции checkForUpdateButtonClicked( ).

 @objc func checkForUpdateButtonClicked() {
    checkForUpdate()
 }

Теперь давайте реализуем наш метод signInOutButtonClicked() , который выполнит вход пользователя, если он вышел из системы, или выйдет из системы, если он уже выполнил вход.

AppDistributionViewController.swift

 @objc func signInOutButtonClicked() {
    if isTesterSignedIn() {
      AppDistribution.appDistribution().signOutTester()

      self.configureCheckForUpdateButton()
      self.configureSignInSignOutButton()
      self.configureSignInStatus()

    } else {
      AppDistribution.appDistribution().signInTester(completion: { error in
        if error == nil {
          self.configureCheckForUpdateButton()
          self.configureSignInSignOutButton()
          self.configureSignInStatus()
        } else {
          let uiAlert = UIAlertController(title: "Custom:Error", message: "Error during tester sign in! \(error?.localizedDescription ?? "")", preferredStyle: .alert)
          uiAlert.addAction(UIAlertAction(title: "Ok", style: UIAlertAction.Style.default) {
            _ in
          })

          self.present(uiAlert, animated: true, completion: nil)
        }
      })
    }
  }

Наконец, давайте реализуем метод isTesterSignedIn .

AppDistributionViewController.swift

 private func isTesterSignedIn() -> Bool {
    return AppDistribution.appDistribution().isTesterSignedIn
 }

Создайте и протестируйте свою реализацию

7. Поздравляем!

Вы встроили функцию «отображения оповещений в приложении» в приложение, используя SDK Firebase App Distribution для iOS.

Что мы рассмотрели

  • Распространение приложений Firebase
  • Распространение приложений Firebase Новые оповещения iOS SDK

Следующие шаги

Узнать больше

Есть вопрос?

Сообщить о проблемах