Дополнительные пакеты 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
в методеapplication(_: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 более одного раза