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