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