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.
- Войдите в консоль Firebase, используя свою учетную запись Google.
- Нажмите кнопку, чтобы создать новый проект, а затем введите название проекта (например,
App Distribution Codelab). - Нажмите «Продолжить» .
- Если появится запрос, ознакомьтесь с условиями использования Firebase и примите их, после чего нажмите «Продолжить» .
- (Необязательно) Включите помощь ИИ в консоли Firebase (в Firebase она называется "Gemini").
- Для этого практического занятия вам не понадобится Google Analytics, поэтому отключите эту опцию.
- Нажмите «Создать проект» , дождитесь завершения подготовки проекта, а затем нажмите «Продолжить» .
Добавить приложение в 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.
- Откройте файл Podfile в той же директории.
cd firebase-appdistribution-ios/start Open Podfile
- Добавьте следующую строку в свой 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. Вы также можете загрузить этот файл в любое время со страницы настроек вашего проекта.

В файле 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. При вызове метода выполняется следующая последовательность действий:
- Проверяет, включены ли у тестировщика оповещения. Если нет, отображает предварительно созданное диалоговое окно, предлагающее войти в 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 с приглашением протестировать приложение. Теперь вы первый тестировщик! Продолжите выполнение инструкций ниже, чтобы зарегистрироваться в качестве тестировщика на вашем тестовом устройстве.
Зарегистрируйте ваше тестовое устройство
Для загрузки и тестирования версии Ad Hoc вам сначала потребуется зарегистрировать ваше тестовое устройство.
- На тестовом устройстве iOS откройте электронное письмо, отправленное Firebase App Distribution, и нажмите на ссылку «Начать». Убедитесь, что ссылка открыта в Safari.
- В появившемся веб-приложении Firebase App Distribution Tester войдите в свою учетную запись Google и нажмите «Принять приглашение».

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

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

Идентификатор пользователя (UDID) тестировщика теперь передан разработчику. Теперь задача разработчика — создать для тестировщика новую версию приложения.
Просмотрите информацию о тестировщике в консоли.
В консоли Firebase, в представлении для разработчиков, отслеживание тестировщика будет отображаться как "Принято" в разделе релизов:

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

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

Файл должен содержать UDID вашего тестового устройства.
Device ID Device Name Device Platform
1234567890 tester.app.distribtuion@gmail.com - iPhone SE 2nd Gen ios
Получив одно из таких писем, обновите свой профиль подготовки, указав UDID, и распространите новую сборку среди тестировщиков, выполнив следующие действия:
- Добавьте устройства на свой портал разработчика Apple.
- Вариант 1: Импортируйте UDID устройств в виде CSV-файла. На вкладке «Тестировщики и группы» панели управления распространением приложений выберите «Все тестировщики», затем нажмите «Экспорт UDID Apple», чтобы загрузить CSV-файл. Далее импортируйте файл в свою учетную запись разработчика Apple, используя опцию «Регистрация нескольких устройств». Для получения дополнительной информации обратитесь к документации Apple . Обратите внимание, что ваша учетная запись разработчика Apple может позволять импортировать только ограниченное количество устройств в год.
- Вариант 2: Получите и введите UDID, полученные по электронной почте. На странице «Добавить устройства» портала разработчиков Apple зарегистрируйте новый UDID, указанный в полученном электронном письме.

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

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

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

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

- Войдите в систему, используя свою учетную запись тестировщика.

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

Распространите обновление среди ваших тестировщиков.
- Обновите номер сборки до "2".

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

Оповещения о сборке теста
- Убедитесь, что вы закрыли приложение, если оно было открыто. Перезапустите приложение.
- После перезапуска приложения вы должны получить уведомление «Доступна новая версия».

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

- Поздравляем! Вам удалось обновить приложение, добавив встроенные оповещения.
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
Следующие шаги
Узнать больше
Есть вопрос?
Сообщить о проблемах
