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

1. Обзор

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

Чему вы научитесь

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

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

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

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

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

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

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

Создайте новый проект Firebase

  1. Войдите в консоль Firebase, используя свою учетную запись Google.
  2. Нажмите кнопку, чтобы создать новый проект, а затем введите имя проекта (например, App Distribution Codelab ).
  3. Нажмите «Продолжить» .
  4. При появлении соответствующего запроса ознакомьтесь с условиями Firebase и примите их, а затем нажмите кнопку «Продолжить» .
  5. (Необязательно) Включите помощь ИИ в консоли Firebase (так называемая «Gemini в Firebase»).
  6. Для этой лабораторной работы вам не понадобится Google Analytics, поэтому отключите опцию Google Analytics.
  7. Нажмите «Создать проект» , дождитесь завершения подготовки проекта, а затем нажмите «Продолжить» .

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

Следуйте документации , чтобы зарегистрировать приложение в Firebase. Используйте «com.google.firebase.codelab.AppDistribution.<your_name>» в качестве идентификатора пакета 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.<ваше_имя>».

Добавьте 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 в своё приложение и настроите отображение внутри приложения оповещений для тестировщиков о новых сборках, доступных для установки. Для этого убедитесь, что вы включили 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 App Distribution и нажмите на ссылку «Начать». Убедитесь, что вы открываете ссылку в Safari.
  2. В открывшемся веб-приложении Firebase App Distribution для тестирования войдите в свою учетную запись Google и нажмите «Принять приглашение».

4d1af345ef944620.png

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

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

fd141215e54a938d.png

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

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

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-файла. На вкладке «Тестировщики и группы» панели управления App Distribution выберите «Все тестировщики», затем нажмите «Экспортировать UDID Apple», чтобы загрузить CSV-файл. Затем импортируйте файл в свою учётную запись разработчика Apple, используя опцию «Зарегистрировать несколько устройств». Подробнее см. в документации Apple . Обратите внимание, что ваша учётная запись разработчика Apple может позволять импортировать ограниченное количество устройств в год.
  • Вариант 2: Получите и введите UDID по электронной почте. На странице «Добавление устройств» портала разработчиков Apple зарегистрируйте новый UDID, указанный в полученном вами электронном письме.

ffb74294e68ee1c8.png

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

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

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

a4049260bae2850b.png

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

При переходе в приложение UDID codelab вы увидите, что релиз готов к загрузке.

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

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

Наконец, реализуем метод isTesterSignedI n.

AppDistributionViewController.swift

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

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

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

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

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

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

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

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

Есть вопрос?

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