تتيح لك حزم Firebase App Distribution iOS و Android SDK عرض التنبيهات داخل التطبيق للمختبرين عند توفر إصدارات جديدة من تطبيقك للتثبيت. يشرح هذا الدليل كيفية استخدام App Distribution iOS و Android SDK لإنشاء وتخصيص تنبيهات بناء جديدة للمختبرين.
قبل ان تبدأ
أضف Firebase إلى مشروع iOS الخاص بك ، إذا لم تكن قد قمت بذلك بالفعل.
الخطوة 1 : تفعيل App Distribution Tester API
حدد مشروعك في Google Cloud Console .
ضمن Firebase App Testers API ، انقر على تمكين .
الخطوة 2 : أضف توزيع التطبيق إلى تطبيقك
افتح ملف Podfile الذي أنشأته للمشروع (أو قم بتشغيل
pod init
لإنشاء واحد) ، ثم أضف السطر التالي داخل القسم الهدف:pod 'FirebaseAppDistribution'
في دليل ملف podfile الخاص بك ، قم بتشغيل
pod install
، ثم افتح ملف.xcworkspace
الذي تم إنشاؤه.قم بترميز معرف تطبيق Google الخاص بك ( مطلوب فقط للإصدارات 9 و 10 من نظام التشغيل iOS ):
قم بترميز معرف تطبيق Google الخاص بك
أضف
appdistribution-<encoded-google-app-id>
مخطط عنوان URL من خلال تضمين المقتطف فيInfo.plist file
(راجع وثائق Apple للحصول على إرشادات حول كيفية إضافة مخطط URL في Xcode):<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>appdistribution-<encoded-google-app-id></string> </array> </dict> </array>
بعد ذلك ، قم بترميز معرف تطبيق Google الخاص بك عن طريق استبدال النقطتين (:) بالشرطات (-). لاحظ أن معرف تطبيق Google موجود في ملف
GoogleService-Info.plist
الخاص بك. على سبيل المثال ، إذا كان معرف تطبيق Google الخاص بك هو:7:77777777777:ios:123456789
معرف تطبيق Google المشفر الخاص بك هو:
7-77777777777-ios-123456789
استيراد وحدة Firebase في بنية
App
أوUIApplicationDelegate
:سويفت
import FirebaseCore
ج موضوعية
@import FirebaseCore;
قم بتهيئة مثيل
FirebaseApp
المشترك ، عادةً في مُهيئApp
أو تطبيق مفوضapplication(_:didFinishLaunchingWithOptions:)
:سويفت
// Use Firebase library to configure APIs FirebaseApp.configure()
ج موضوعية
// Use Firebase library to configure APIs [FIRApp configure];
أخيرًا ، أعد تجميع تطبيقك.
الخطوة 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 أكثر من مرة