کیتهای توسعه نرمافزاری iOS و Android اختیاری Firebase App Distribution به شما امکان میدهند هشدارهای درونبرنامهای را به آزمایشکنندگان خود نشان دهید، زمانی که ساختهای جدید برنامهتان برای نصب در دسترس هستند. این راهنما نحوه استفاده از App Distribution iOS و Android SDK را برای ایجاد و سفارشی کردن هشدارهای ساخت جدید برای آزمایش کنندگان خود توضیح می دهد.
قبل از شروع
اگر قبلاً این کار را نکردهاید، Firebase را به پروژه iOS خود اضافه کنید .
مرحله 1 : API App Distribution تستر را فعال کنید
پروژه خود را در کنسول Google Cloud انتخاب کنید.
در زیر Firebase App Testers API ، روی فعال کردن کلیک کنید.
مرحله 2 : App Distribution به برنامه خود اضافه کنید
Podfile را که برای پروژه ایجاد کردید باز کنید (یا برای ایجاد آن
pod init
اجرا کنید)، سپس خط زیر را در قسمت هدف اضافه کنید:pod 'FirebaseAppDistribution'
در پوشه پادفایل خود،
pod install
اجرا کنید، سپس فایل.xcworkspace
. ایجاد شده را باز کنید.ماژول Firebase را در ساختار
App
یاUIApplicationDelegate
خود وارد کنید:سویفت
import FirebaseCore import FirebaseAppDistribution
هدف-C
@import FirebaseCore; @import FirebaseAppDistribution;
یک نمونه اشتراکگذاری شده
FirebaseApp
در روشapplication(_:didFinishLaunchingWithOptions:)
پیکربندی کنید:سویفت
// Use Firebase library to configure APIs FirebaseApp.configure()
هدف-C
// Use Firebase library to configure APIs [FIRApp configure];
اگر Swizzling غیرفعال است، در اجرای برنامه خود، 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 }
هدف-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 دو راه برای تنظیم هشدارهای ساخت درون برنامه ای برای آزمایش کنندگان شما ارائه می دهد: یک پیکربندی هشدار اولیه، که همراه با به روز رسانی از پیش ساخته شده برنامه و دیالوگ های ورود به سیستم برای نمایش به آزمایش کنندگان است، و یک پیکربندی هشدار پیشرفته، که اجازه می دهد تا شما رابط کاربری خود را سفارشی کنید. توصیه می کنیم در صورتی که تازه وارد SDK App Distribution هستید، ابتدا از پیکربندی اولیه هشدار استفاده کنید.
پیکربندی اولیه
از checkForUpdate
برای نمایش یک گفتگوی از پیش ساخته شده هشدارهای فعال به آزمایش کنندگانی که هنوز هشدارها را فعال نکرده اند، استفاده کنید و سپس بررسی کنید که آیا ساخت جدیدی در دسترس است یا خیر. هنگامی که متد فراخوانی می شود، دنباله زیر را اعمال می کند:
بررسی میکند که آیا آزمایشکننده هشدارها را فعال کرده است یا App Distribution .
اگر آزمایشگر هنوز هشدارها را فعال نکرده باشد، یک گفتگوی از پیش ساخته شده را نمایش می دهد.
فعال کردن هشدارها یک فرآیند یکبار مصرف در دستگاه آزمایشی است و در بهروزرسانیهای برنامه شما ادامه دارد. هشدارها تا زمانی که برنامه حذف نصب نشود یا تا زمانی که متد
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)
})
هدف-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
})
}
هدف-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 وارد شود