Дополнительный SDK для распространения приложений Firebase позволяет отображать внутри приложения оповещения для тестировщиков, когда новые сборки вашего приложения доступны для установки. В этом руководстве объясняется, как использовать SDK распространения приложений для создания и настройки предупреждений о новых сборках для ваших тестировщиков.
Прежде чем вы начнете
Если вы еще этого не сделали, добавьте Firebase в свой проект iOS .
Шаг 1. Включите API тестера распространения приложений
Выберите свой проект в Google Cloud Console .
В разделе API тестеров приложений Firebase нажмите Включить .
Шаг 2. Добавьте в свое приложение распространение приложений
Мы рекомендуем использовать CocoaPods для установки библиотек Firebase. Вы также можете напрямую интегрировать фреймворки SDK .
Откройте подфайл, который вы создали для проекта (или запустите
pod init
чтобы создать его), затем добавьте следующую строку в целевой раздел:pod 'Firebase/AppDistribution'
В каталоге вашего подфайла запустите
pod install
, затем откройте созданный файл.xcworkspace
.Кодируйте свой идентификатор приложения Google ( требуется только для iOS версий 9 и 10 ):
Закодируйте свой идентификатор приложения Google
Добавьте схему URL
appdistribution-<encoded-google-app-id>
, включив фрагмент в файлInfo.plist file
(инструкции по добавлению схемы URL в Xcode см. В документации Apple ):<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>appdistribution-<encoded-google-app-id></string> </array> </dict> </array>
Затем закодируйте свой идентификатор приложения Google, заменив двоеточия (:) дефисами (-). Обратите внимание, что идентификатор вашего приложения Google находится в
GoogleService-Info.plist
. Например, если ваш идентификатор приложения Google:7:77777777777:ios:123456789
Ваш закодированный идентификатор приложения Google:
7-77777777777-ios-123456789
Импортируйте модуль Firebase в свой
UIApplicationDelegate
:Быстрый
import Firebase
Цель-C
@import Firebase;
Настройте общий экземпляр
FirebaseApp
, как правило, в методеapplication:didFinishLaunchingWithOptions:
вашего приложения:Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()
Цель-C
// Use Firebase library to configure APIs [FIRApp configure];
Наконец, перекомпилируйте приложение.
Шаг 3. Настройте оповещения в приложении
Пакет SDK для распространения приложений предоставляет два способа настройки предупреждений о сборке в приложении для ваших тестировщиков: базовая конфигурация предупреждений, которая поставляется с предварительно созданным диалоговым окном входа для отображения для тестировщиков, и расширенная конфигурация предупреждений, которая позволяет вам настроить свой собственный пользовательский интерфейс (UI). Мы рекомендуем сначала использовать базовую конфигурацию предупреждений, если вы новичок в SDK распространения приложений.
Базовая конфигурация
Используйте checkForUpdate
чтобы отобразить предварительно созданное диалоговое окно включения предупреждений для тестировщиков, которые еще не включили предупреждения, а затем проверьте, доступна ли новая сборка. При вызове метод выполняет следующую последовательность:
Проверяет, активировал ли тестировщик оповещения, предлагая ему войти в App Distribution со своей учетной записью Google.
Если тестер еще не включил предупреждения, отображает предварительно созданный диалог.
Включение предупреждений - это однократный процесс на тестовом устройстве, который сохраняется при всех обновлениях вашего приложения. Оповещения остаются включенными на тестовом устройстве до тех пор, пока приложение не будет
signOutTester
или пока не будетsignOutTester
методsignOutTester
. См. Справочную документацию по методу ( Swift или Objective-C ) для получения дополнительной информации.Проверяет наличие новых сборок для установки тестировщика.
Вы можете включить checkForUpdate
в любое время в своем приложении. Например, вы можете предложить своим тестировщикам установить новые доступные сборки при запуске, включив checkForUpdate
в viewDidAppear
UIViewController
.
В следующих примерах проверяется, включил ли тестировщик оповещения и есть ли у него доступ к новой сборке, и если да, отображается диалоговое окно, когда сборка доступна для установки:
Проверьте наличие включенных предупреждений :
Быстрый
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})
Цель-C
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];
Отобразить диалог установки новой сборки :
Быстрый
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
guard let release = release else {
return
}
// Customize your alerts here.
let title = "New Version Available"
let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
let 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 should be a UIViewController.
self.present(uialert, animated: true, completion: nil)
})
Цель-C
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
if (error) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];
[alert addAction:okAction];
[self presentViewController:alert animated:YES completion:nil];
return;
}
if (release) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
[alert addAction:updateAction];
[alert addAction:cancelAction];
[self presentViewController:alert animated:YES completion:nil];
}
}];
Расширенная конфигурация
Методы signInTester
и isTesterSignedIn
дают вам больше гибкости при настройке способа signInTester
вашего тестировщика, чтобы он лучше соответствовал внешнему виду вашего приложения.
В следующем примере проверяется, вошел ли уже тестировщик в свою учетную запись тестера Firebase App Distribution, поэтому вы можете выбрать отображение пользовательского интерфейса входа только для тестировщиков, которые еще не вошли в систему. После входа тестировщика вы можете вызовите checkForUpdate
чтобы проверить, есть ли у тестировщика доступ к новой сборке.
Быстрый
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().signInTester (completion: { error in
// completion block for signInTester
if (error != nil) {
// handle failed sign in
return
}
// handle successful sign in
})
}
// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// completion block for check for update
})
}
Цель-C
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
signInTesterWithCompletion:^(NSError *_Nullable error) {
// completion block for signInTester
if (error) {
// handle failed sign in
return;
}
// handle successful sign in
}];
}
// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
// completion block for check for update
}];
}
Для получения информации о дополнительных методах, включая signOutTester
, см. Справочную документацию по распространению приложений для Swift и Objective-C .
Шаг 4. Создайте и протестируйте свою реализацию
Наконец, создайте свое приложение и протестируйте свою реализацию, отправив сборку тестировщикам с помощью консоли Firebase.
Посетите руководство по устранению неполадок при распространении приложений, чтобы получить помощь по общим вопросам, таким как:
- Тестировщик не получает оповещения в приложении
- Тестеру более одного раза предлагается войти в Google