کیتهای توسعه نرمافزار اختیاری Firebase App Distribution iOS و Android به شما امکان میدهند هنگامی که ساختهای جدید برنامهتان برای نصب دردسترس است، هشدارهای درونبرنامه را به آزمایشکنندگان نشان دهید. این راهنما توضیح میدهد که چگونه از کیتهای توسعه نرمافزار iOS و Android App Distribution برای ایجاد و سفارشیسازی هشدارهای ساخت جدید برای آزمایشکنندگان خود استفاده کنید.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه iOS خود اضافه کنید.
مرحله ۱: فعال کردن App Distribution Tester API
پروژهتان را در Google Cloud کنسول انتخاب کنید.
در بخش Firebase App Testers API، روی فعال کردن کلیک کنید.
مرحله ۲: افزودن App Distribution به برنامه
Podfile را که برای پروژه ایجاد کردهاید باز کنید (یا
pod initرا اجرا کنید تا یکی ایجاد شود)، سپس خط زیر را در بخش هدف اضافه کنید: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];اگر swizzling غیرفعال است، هر نشانی وب بازشدهای را به App Distribution SDK در پیادهسازی
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; }درنهایت، برنامهتان را بازهمگردانی کنید.
مرحله ۳: پیکربندی هشدارهای درونبرنامه
App Distribution 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 مراجعه کنید.
مرحله ۴: ساختن و آزمایش کردن پیادهسازی
درنهایت، برنامهتان را بسازید و پیادهسازیتان را با توزیع ساخت به آزمایشکنندگان بااستفاده از کنسول Firebase آزمایش کنید.
برای دریافت راهنمایی درباره مشکلات رایج، به App Distribution راهنمای عیبیابی مراجعه کنید، مشکلاتی مانند:
- آزمایشکننده هشدارهای درونبرنامه را دریافت نمیکند
- از آزمایشکننده بیشاز یکبار خواسته میشود به سیستم Google وارد شود