تتيح لك حزم Firebase App Distribution iOS و Android SDK عرض التنبيهات داخل التطبيق للمختبرين عند توفر إصدارات جديدة من تطبيقك للتثبيت. يشرح هذا الدليل كيفية استخدام App Distribution iOS و Android SDK لإنشاء وتخصيص تنبيهات بناء جديدة للمختبرين لديك.
قبل ان تبدأ
أضف Firebase إلى مشروع iOS الخاص بك ، إذا لم تكن قد قمت بذلك بالفعل.
الخطوة 1 : تفعيل واجهة برمجة تطبيقات اختبار توزيع التطبيق
حدد مشروعك في Google Cloud Console .
ضمن Firebase App Testers API ، انقر على تمكين .
الخطوة 2 : أضف توزيع التطبيق إلى تطبيقك
افتح ملف Podfile الذي أنشأته للمشروع (أو قم بتشغيل
pod init
لإنشاء واحد) ، ثم أضف السطر التالي داخل القسم الهدف:pod 'FirebaseAppDistribution'
في دليل ملف podfile الخاص بك ، قم بتشغيل
pod install
، ثم افتح ملف.xcworkspace
الذي تم إنشاؤه.استيراد وحدة Firebase في بنية
App
أوUIApplicationDelegate
:سويفت
import FirebaseCore import FirebaseAppDistribution
ج موضوعية
@import FirebaseCore; @import FirebaseAppDistribution;
قم بتهيئة مثيل
FirebaseApp
مشترك فيapplication(_:didFinishLaunchingWithOptions:)
:سويفت
// Use Firebase library to configure APIs FirebaseApp.configure()
ج موضوعية
// 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 }
ج موضوعية
- (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 لتوزيع التطبيقات.
التكوين الأساسي
استخدم 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)
})
ج موضوعية
[[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()
، راجع الوثائق المرجعية لتوزيع التطبيقات لـ Swift و Objective-C .
الخطوة 4 : بناء واختبار التنفيذ الخاص بك
أخيرًا ، أنشئ تطبيقك واختبر التنفيذ عن طريق توزيع الإصدار على المختبرين باستخدام وحدة تحكم Firebase.
تفضل بزيارة دليل استكشاف أخطاء توزيع التطبيقات وإصلاحها للحصول على المساعدة في المشكلات الشائعة ، مثل:
- لا يتلقى المختبِر تنبيهات داخل التطبيق
- يُطلب من المختبر تسجيل الدخول إلى Google أكثر من مرة