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

1. Обзор

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

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

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

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

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

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

Как бы вы оценили свой опыт создания приложений для 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. Откройте подфайл в том же каталоге.
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.<ваше_имя>».

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

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

3cf9290805e7fdab.png

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

AppDistributionExample/AppDelegate.swift

import Firebase

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

AppDistributionExample/AppDelegate.swift

FirebaseApp.configure()

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

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

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

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

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

  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 с приглашением протестировать приложение. Теперь вы первый тестер! Продолжите раздел ниже, чтобы настроиться в качестве тестера на тестовом устройстве.

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

Вам необходимо сначала зарегистрировать тестовое устройство, чтобы загрузить и протестировать специальную версию.

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

4d1af345ef944620.png

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

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

fd141215e54a938d.png

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

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

fe93d649dfa25877.png

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

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

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

1bef6f182c1c58f9.png

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

  1. Чтобы экспортировать все UDID, откройте вкладку «Тестеры и группы».

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 или CLI. Если вы уже распространили сборку с тем же номером и версией сборки, уведомления по электронной почте получат только пользователи вновь зарегистрированных устройств.

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

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

a4049260bae2850b.png

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

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

папа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, чтобы проверить, имеет ли тестер доступ к новой сборке.

Давайте отключим автоматическую проверку обновлений в viewDidAppea r, закомментировав вызов 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. Поздравляем!

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

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

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

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

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

Есть вопрос?

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