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