Дополнительные SDK Firebase App Distribution для iOS и Android позволяют отображать внутри приложения оповещения для тестировщиков о появлении новых сборок вашего приложения, доступных для установки. В этом руководстве объясняется, как использовать SDK App Distribution для iOS и Android для создания и настройки оповещений о новых сборках для ваших тестировщиков.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой iOS-проект .
Шаг 1 : Включите API средства тестирования App Distribution
Выберите свой проект в консоли Google Cloud .
В разделе Firebase App Testers API нажмите «Включить» .
Шаг 2 : Добавьте App Distribution в ваше приложение.
Откройте созданный вами Podfile (или запустите
pod initдля его создания), затем добавьте следующую строку в раздел `target`:pod 'FirebaseAppDistribution'
В директории вашего podfile выполните команду
pod install, затем откройте созданный файл.xcworkspace.Импортируйте модуль Firebase в структуру
AppилиUIApplicationDelegate:Быстрый
import FirebaseCore import FirebaseAppDistributionObjective-C
@import FirebaseCore; @import FirebaseAppDistribution;Настройте общий экземпляр
FirebaseAppв методеapplication(_:didFinishLaunchingWithOptions:)вашего делегата приложения:Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()Objective-C
// Use Firebase library to configure APIs [FIRApp configure];Если функция подмены URL-адресов отключена, передайте все открытые URL-адреса в SDK App Distribution в вашей реализации функции
application(_:open:options:):Быстрый
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 : Настройка оповещений в приложении
SDK App Distribution предоставляет два способа настройки оповещений о сборке приложения для ваших тестировщиков: базовая конфигурация оповещений, которая включает в себя предварительно созданные диалоги обновления приложения и входа в систему для отображения тестировщикам, и расширенная конфигурация оповещений, которая позволяет настраивать собственный пользовательский интерфейс. Мы рекомендуем сначала использовать базовую конфигурацию оповещений, если вы новичок в SDK App Distribution .
Базовая конфигурация
Используйте checkForUpdate , чтобы отобразить предварительно созданное диалоговое окно включения оповещений для тестировщиков, которые еще не включили оповещения, а затем проверить, доступна ли новая сборка. При вызове метод выполняет следующую последовательность действий:
Проверяет, включены ли у тестировщика оповещения, предлагая ему войти в App Distribution с помощью своей учетной записи Google.
Если тестировщик еще не включил оповещения, отображается предварительно созданное диалоговое окно.
Включение оповещений — это одноразовая процедура на тестовом устройстве, которая сохраняется после обновлений вашего приложения. Оповещения остаются включенными на тестовом устройстве до тех пор, пока приложение не будет удалено или пока не будет вызван метод
signOutTester. Дополнительную информацию см. в справочной документации по методу ( на Swift или Objective-C ).Проверяет наличие новых доступных сборок для установки тестировщиком.
Вы можете вызвать checkForUpdate() в любой точке вашего приложения. Например, вы можете предложить тестировщикам установить новые доступные сборки при запуске, включив checkForUpdate() в обработчик onAppear(perform:) корневого представления вашего приложения.
В следующем примере проверяется, включены ли у тестировщика оповещения и есть ли у него доступ к новой сборке, и если да, то отображается диалоговое окно, когда сборка становится доступна для установки:
Быстрый
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() , чтобы проверить, имеет ли он доступ к новой сборке.
Быстрый
// 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 более одного раза.