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

1. Обзор

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

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

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

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

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

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

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

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

Новичок Средний Профессионал

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

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

  1. Войдите в консоль Firebase, используя свою учетную запись Google.
  2. Нажмите кнопку, чтобы создать новый проект, а затем введите название проекта (например, App Distribution Codelab ).
  3. Нажмите «Продолжить» .
  4. Если появится запрос, ознакомьтесь с условиями использования Firebase и примите их, после чего нажмите «Продолжить» .
  5. (Необязательно) Включите помощь ИИ в консоли Firebase (в Firebase она называется "Gemini").
  6. Для этого практического занятия вам не понадобится 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. Добавьте следующую строку в свой podfile:

Podfile

pod 'Firebase/AppDistribution'

Выполните команду pod update в каталоге проекта и откройте проект в Xcode.

pod install --repo-update
xed .

Обновите идентификатор пакета (Bundle Identifier) ​​в соответствии с вашим приложением 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 для распространения приложений.

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

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

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 Tester войдите в свою учетную запись Google и нажмите «Принять приглашение».

4d1af345ef944620.png

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

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

fd141215e54a938d.png

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

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

fe93d649dfa25877.png

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

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

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

1bef6f182c1c58f9.png

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

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

2745d49a6abc47fe.png

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

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

ffb74294e68ee1c8.png

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

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

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

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. Поздравляем!

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

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

  • Firebase App Distribution
  • Firebase App Distribution: Новые уведомления iOS SDK

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

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

Есть вопрос?

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