1. Обзор
Добро пожаловать в раздел «Интеграция Firebase App Distribution SDK в лабораторию кода вашего приложения iOS». В этой лаборатории кода вы добавите в свое приложение SDK App Distribution, чтобы отображать внутри приложения оповещения для ваших тестировщиков, когда новые сборки доступны для загрузки. Вы узнаете, как использовать как базовую, так и пользовательскую конфигурацию, чтобы тестировщики могли войти в систему и получать обновления. Затем вы отправите новый выпуск в App Distribution и активируете оповещение о новой сборке прямо в приложении.
Что вы узнаете
- Как использовать App Distribution для распространения предварительной версии приложения среди живых тестировщиков
- Как интегрировать iOS SDK App Distribution в ваше приложение
- Как предупредить тестировщика о появлении новой предварительной сборки, готовой к установке
- Как настроить SDK в соответствии с вашими уникальными потребностями в тестировании
Что вам понадобится
- Xcode 12 (или выше)
- CocoaPods 1.9.1 (или выше)
- Учетная запись разработчика Apple для специального распространения.
- Физическое устройство iOS для тестирования. ( Приложение симулятора iOS будет работать для большей части лаборатории кода, но симуляторы не могут загружать выпуски.)
Как вы будете использовать этот урок?
Как бы вы оценили свой опыт создания приложений для iOS?
2. Создайте консольный проект Firebase.
Добавить новый проект Firebase
- Войдите в Firebase.
- В консоли Firebase нажмите «Добавить проект» и назовите свой проект «Firebase Codelab».
Вам не нужно включать Google Analytics для этого проекта.
- Нажмите Создать проект .
Добавить приложение в 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.
- Откройте подфайл в том же каталоге.
cd firebase-appdistribution-ios/start Open Podfile
- Добавьте следующую строку в свой подфайл:
Подфайл
pod 'Firebase/AppDistribution'
Запустите pod update
в каталоге проекта и откройте проект в Xcode.
pod install --repo-update xed .
Обновите идентификатор пакета, чтобы он соответствовал вашему приложению Firebase.
В левом меню дважды щелкните AppDistributionExample. Затем перейдите на вкладку «Общие» и измените идентификатор пакета, чтобы он соответствовал идентификатору пакета вашего приложения Firebase, который можно найти в настройках проекта . Это должно быть «com.google.firebase.codelab.AppDistribution.<ваше_имя>».
Добавьте Firebase в свое приложение
Найдите в своей файловой системе файл GoogleService-Info.plist
который вы скачали ранее, и перетащите его в корень проекта Xcode. Вы также можете скачать этот файл в любое время со страницы настроек вашего проекта.
В файле 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
чтобы отобразить предварительно созданное диалоговое окно включения оповещений для тестировщиков, которые еще не включили оповещения, а затем проверить, доступна ли новая сборка. Тестировщики включают оповещения, войдя в учетную запись, имеющую доступ к приложению в разделе «Распространение приложений». При вызове метод выполняет следующую последовательность:
- Проверяет, включил ли тестер оповещения. Если нет, отображается предварительно созданное диалоговое окно, предлагающее войти в App Distribution под своей учетной записью Google.
Включение оповещений — это однократный процесс на тестовом устройстве, который сохраняется при обновлении вашего приложения. Оповещения остаются включенными на тестовом устройстве до тех пор, пока приложение не будет удалено или пока не будет вызван метод signOutTester
. Дополнительную информацию см. в справочной документации метода ( Swift или Objective-C ).
- Проверяет наличие новых доступных сборок для установки тестером. Возвращает объект выпуска или ошибку .
Вы можете включить 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)» в качестве места назначения сборки и выберите «Продукт» -> «Архив». После создания архива создайте подписанный дистрибутив с профилем дистрибутива для разработки.
По завершении сборки файл IPA и некоторые файлы журналов сохраняются в указанной вами папке. Вы распространяете IPA-файл среди своих тестировщиков, выполнив следующие шаги.
Если у вас возникли проблемы при создании приложения, ознакомьтесь с документацией Apple по кодированию, где описаны действия по устранению неполадок.
Распространите свое приложение среди тестировщиков
Чтобы распространить свое приложение среди тестировщиков, загрузите файл IPA с помощью консоли Firebase:
- Откройте страницу распространения приложений консоли Firebase. При появлении запроса выберите проект Firebase.
- Нажмите Начать
- На странице «Релизы» выберите в раскрывающемся меню приложение, которое вы хотите распространить.
- Перетащите IPA-файл вашего приложения на консоль, чтобы загрузить его.
- После завершения загрузки укажите группы тестировщиков и отдельных тестировщиков, которым вы хотите получить сборку. (Чтобы получить приглашение, добавьте свой адрес электронной почты.) Затем добавьте примечания к выпуску сборки. Дополнительные сведения о создании групп тестировщиков см. в разделе «Управление тестировщиками» .
- Нажмите «Распространить», чтобы сделать сборку доступной для тестировщиков.
Добавьте себя в качестве тестировщика в релиз
В консоли Firebase теперь вы можете увидеть тестировщиков, добавленных вами в версию вашего приложения.
Поскольку вы указали свой адрес электронной почты, вы получите электронное письмо от Firebase App Distribution с приглашением протестировать приложение. Теперь вы первый тестер! Продолжите раздел ниже, чтобы настроиться в качестве тестера на тестовом устройстве.
Зарегистрируйте свое тестовое устройство
Вам необходимо сначала зарегистрировать тестовое устройство, чтобы загрузить и протестировать специальную версию.
- На тестовом устройстве iOS откройте электронное письмо, отправленное из Firebase App Distribution, и нажмите ссылку «Начать». Обязательно откройте ссылку в Safari.
- В появившемся веб-приложении для тестирования распространения приложений Firebase войдите в свою учетную запись Google и нажмите «Принять приглашение».
Теперь вы увидите выпуск, на который вас пригласили.
- Нажмите «Зарегистрировать устройство» , чтобы поделиться своим UDID с Firebase, чтобы вы могли позже обновить профиль обеспечения своего приложения.
- Следуйте инструкциям и перейдите в настройки, чтобы загрузить профиль и поделиться своим UDID.
Теперь, когда вы вернетесь в раздел «Распространение приложений», выпуск будет помечен как «Устройство зарегистрировано»:
UDID тестера теперь передан разработчику. Теперь разработчик должен создать для тестировщика новую версию приложения.
Просмотр информации о тестере в консоли
Вернувшись в представление разработчика в консоли Firebase, тестер будет отображаться как «Принято» в разделе выпуска:
Затем вы также получите электронное письмо от имени разработчика, если устройство, которое он использует, еще не включено в профиль обеспечения. Это уведомит вас о новом UDID, который вам необходимо добавить. У вас также есть возможность экспортировать все UDID в текстовый файл.
- Чтобы экспортировать все UDID, откройте вкладку «Тестеры и группы».
- Нажмите «Экспортировать Apple UDID».
Файл должен содержать UDID вашего тестового устройства.
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
Получив одно из этих писем, обновите свой профиль обеспечения, указав UDID, и распространите новую сборку среди своих тестировщиков, выполнив следующие действия:
- Добавьте устройства на свой портал разработчиков Apple.
- Вариант 1. Импортируйте UDID устройства в виде файла CSV. На вкладке «Тестеры и группы» панели «Распространение приложений» выберите «Все тестировщики», затем нажмите «Экспорт Apple UDID», чтобы загрузить CSV-файл. Затем импортируйте файл в свою учетную запись разработчика Apple , используя опцию «Зарегистрировать несколько устройств». Чтобы узнать больше, обратитесь к документации Apple . Обратите внимание, что ваша учетная запись разработчика Apple может позволять вам импортировать только ограниченное количество устройств в год.
- Вариант 2. Соберите и введите UDID по электронной почте. На странице «Добавление устройств» портала разработчиков Apple зарегистрируйте новый UDID, указанный в полученном вами электронном письме.
- Добавьте зарегистрированные устройства в свой профиль обеспечения .
- Загрузите профиль подготовки и используйте его для перестройки приложения. Если вы выполняете пересборку только для обновления зарегистрированных устройств, не обновляйте номер сборки или версию.
- Повторно распространяйте свое приложение из консоли Firebase или CLI. Если вы уже распространили сборку с тем же номером и версией сборки, уведомления по электронной почте получат только пользователи вновь зарегистрированных устройств.
Загрузите релиз с тестового устройства
Теперь в выпуске есть UDID тестового устройства, поэтому тестовое устройство может загрузить и установить приложение. App Distribution отправляет тестировщикам электронное письмо, когда их UDID добавляется в новую версию.
- На тестовом устройстве вернитесь в веб-приложение для тестирования распространения приложений, используя ссылку в электронном письме или значок на главном экране устройства.
Перейдя к приложению UDID Codelab, вы увидите, что выпуск готов к загрузке.
- Если вы используете физическое устройство, нажмите «Загрузить», затем установите и запустите приложение!
- Когда приложение запустится, оно попросит вас включить оповещения о новых сборках. Выберите «Включить».
- Затем вам будет предложено войти в систему. Нажмите «Продолжить».
- Войдите в свою учетную запись тестера.
- Вы вернетесь в приложение. Вам не придется входить в систему или принимать оповещения при следующем запуске приложения.
Распространите обновление среди своих тестировщиков
- Обновите номер сборки до «2».
- Выберите «Любое устройство iOS (arm64)» в качестве места назначения сборки и выберите «Продукт» -> «Архив». После создания архива создайте подписанный дистрибутив с профилем дистрибутива для разработки.
- По завершении сборки файл IPA и некоторые файлы журналов сохраняются в указанной вами папке. Загрузите этот новый IPA в консоль Firebase, снова добавьте свой адрес электронной почты в качестве тестера и распространите.
Оповещения о тестовых сборках
- Убедитесь, что вы закрыли приложение, если оно было открыто. Перезапустите приложение.
- Когда приложение перезапустится, вы должны получить предупреждение «Доступна новая версия».
- Нажмите «Обновить», чтобы получить последнюю версию.
- Нажмите «Установить» на следующем экране.
- Поздравляем! Вы смогли обновить свое приложение с помощью встроенных оповещений.
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
Следующие шаги
Узнать больше
Есть вопрос?
- Stackoverflow 'firebase-приложение-распределение '
- Slack-канал сообщества Firebase #app-distribution
Сообщить о проблемах