Дополнительные SDK Firebase App Distribution для iOS и Android позволяют показывать тестировщикам оповещения в приложении, когда становятся доступны новые сборки. В этом руководстве рассказывается, как использовать SDK App Distribution для iOS и Android, чтобы создавать и настраивать оповещения о новых сборках для тестировщиков.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект iOS.
Шаг 1. Включите App Distribution Tester API.
Выберите проект в консоли Google Cloud.
В разделе Firebase App Testers API нажмите Включить.
Шаг 2. Добавьте App Distribution в приложение
Откройте файл Podfile, созданный для проекта (или выполните команду
pod init, чтобы создать его), а затем добавьте в раздел target следующую строку:pod 'FirebaseAppDistribution'
В каталоге файла podfile выполните команду
pod install, а затем откройте созданный файл.xcworkspace.Импортируйте модуль Firebase в структуру
Appили подклассUIApplicationDelegate:Swift
import FirebaseCore import FirebaseAppDistributionObjective-C
@import FirebaseCore; @import FirebaseAppDistribution;Настройте общий экземпляр
FirebaseAppв методеapplication(_:didFinishLaunchingWithOptions:)делегата приложения:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()Objective-C
// Use Firebase library to configure APIs [FIRApp configure];Если подмена отключена, передайте все открытые URL в SDK App Distribution в реализации
application(_:open:options:):Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { if AppDistribution.appDistribution().application(application, open: url, options: options) { return true } // Handle other non-Firebase URLs here. return false }Objective-C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) { return YES; } // Handle other non-Firebase URLs here. return NO; }Перекомпилируйте приложение.
Шаг 3. Настройте оповещения в приложении
App Distribution SDK позволяет настроить оповещения о сборках в приложении для тестировщиков двумя способами: базовым (с готовыми диалоговыми окнами обновления приложения и входа) и расширенным (с возможностью настроить собственный пользовательский интерфейс). Если вы только начинаете работать с SDK App Distribution, рекомендуем сначала использовать базовую конфигурацию оповещений.
Базовая конфигурация
Используйте checkForUpdate, чтобы показать диалоговое окно с предложением включить оповещения тестировщикам, которые ещё не сделали этого, а затем проверьте, доступна ли новая сборка. При вызове метода выполняется следующая последовательность действий:
Проверяет, включил ли тестировщик оповещения, предлагая ему войти в App Distribution с помощью аккаунта Google.
Если тестировщик ещё не включил оповещения, показывается стандартное диалоговое окно.
Оповещения включаются на тестовом устройстве один раз и сохраняются при обновлении приложения. Они будут работать, пока вы не удалите приложение или не вызовете метод
signOutTester. Дополнительную информацию можно найти в справочной документации по методу (Swift или Objective-C).Проверяет, доступны ли для установки новые сборки.
Вы можете вызвать checkForUpdate() в любой точке приложения. Например, вы можете предложить тестировщикам установить новые доступные сборки при запуске, включив checkForUpdate() в onAppear(perform:) корневого представления приложения.
В следующем примере проверяется, включил ли тестировщик оповещения и есть ли у него доступ к новой сборке. Если да, то при наличии сборки, доступной для установки, отображается диалоговое окно.
Swift
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
if error != nil {
// Handle error
return
}
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)
})
Objective-C
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
if (error) {
// Handle error
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 позволяют настраивать вход тестировщиков в аккаунт, чтобы он соответствовал внешнему виду приложения.
В следующем примере проверяется, вошел ли тестировщик в свой аккаунт Firebase App Distribution. Это позволяет показывать интерфейс входа только тем тестировщикам, которые ещё не вошли в аккаунт. После входа тестировщика вы можете вызвать checkForUpdate(), чтобы проверить, есть ли у него доступ к новой сборке.
Swift
// 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
})
}
Objective-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(), можно найти в справочной документации по App Distribution для Swift и Objective-C.
Шаг 4. Создайте и протестируйте реализацию
Наконец, создайте приложение и протестируйте реализацию, распространив сборку среди тестировщиков с помощью консоли Firebase.
В руководстве по устранению неполадок с App Distribution вы найдете информацию о том, как решить распространенные проблемы, например:
- Тестировщик не получает оповещения в приложении
- Тестировщику предлагается войти в аккаунт Google несколько раз