Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

أبلغ المختبرين عن البنيات الجديدة

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

تتيح لك حزم Firebase App Distribution iOS و Android SDK عرض التنبيهات داخل التطبيق للمختبرين عند توفر إصدارات جديدة من تطبيقك للتثبيت. يشرح هذا الدليل كيفية استخدام App Distribution iOS و Android SDK لإنشاء وتخصيص تنبيهات بناء جديدة للمختبرين لديك.

قبل ان تبدأ

أضف Firebase إلى مشروع iOS الخاص بك ، إذا لم تكن قد قمت بذلك بالفعل.

الخطوة 1 : تفعيل واجهة برمجة تطبيقات اختبار توزيع التطبيق

  1. حدد مشروعك في Google Cloud Console .

  2. ضمن Firebase App Testers API ، انقر على تمكين .

الخطوة 2 : أضف توزيع التطبيق إلى تطبيقك

  1. افتح ملف Podfile الذي أنشأته للمشروع (أو قم بتشغيل pod init لإنشاء واحد) ، ثم أضف السطر التالي داخل القسم الهدف:

    pod 'FirebaseAppDistribution'
  2. في دليل ملف podfile الخاص بك ، قم بتشغيل pod install ، ثم افتح ملف .xcworkspace الذي تم إنشاؤه.

  3. استيراد وحدة Firebase في بنية App أو UIApplicationDelegate :

    سويفت

    import FirebaseCore
    import FirebaseAppDistribution
    

    ج موضوعية

    @import FirebaseCore;
    @import FirebaseAppDistribution;
    
  4. قم بتهيئة مثيل FirebaseApp مشترك في تطبيق مفوض application(_:didFinishLaunchingWithOptions:) :

    سويفت

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  5. إذا تم تعطيل 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;
    }
    
  6. أخيرًا ، أعد تجميع تطبيقك.

الخطوة 3 : تكوين التنبيهات داخل التطبيق

يوفر App Distribution SDK طريقتين لإعداد تنبيهات بناء داخل التطبيق للمختبرين: تكوين تنبيه أساسي ، والذي يأتي مع تحديث التطبيق المدمج مسبقًا ومربعات حوار تسجيل الدخول لعرضها على المختبرين ، وتكوين تنبيه متقدم ، مما يسمح يمكنك تخصيص واجهة المستخدم الخاصة بك. نوصي أولاً باستخدام تكوين التنبيه الأساسي إذا كنت جديدًا في تطبيق SDK لتوزيع التطبيقات.

التكوين الأساسي

استخدم checkForUpdate لعرض حوار تنبيهات التمكين المبني مسبقًا للمختبرين الذين لم يقوموا بتمكين التنبيهات بعد ، ثم تحقق مما إذا كان يتوفر إصدار جديد. عندما يتم استدعاؤها ، تقوم الطريقة بتفعيل التسلسل التالي:

  1. للتحقق مما إذا كان أحد المختبرين قد قام بتمكين التنبيهات عن طريق مطالبتهم بتسجيل الدخول إلى App Distribution باستخدام حساب Google الخاص بهم.

  2. إذا لم يقم المُختبِر بتمكين التنبيهات بعد ، فسيتم عرض حوار مُعد مسبقًا.

    تمكين التنبيهات هو عملية لمرة واحدة على جهاز الاختبار وتستمر عبر تحديثات تطبيقك. تظل التنبيهات ممكّنة على جهاز الاختبار حتى يتم إلغاء تثبيت التطبيق ، أو حتى يتم استدعاء طريقة signOutTester . راجع الوثائق المرجعية للطريقة ( Swift أو Objective-C ) لمزيد من المعلومات.

  3. يتحقق من الإصدارات المتوفرة حديثًا ليتم تثبيتها من قِبل المُختبِر.

يمكنك استدعاء checkForUpdate() في أي وقت في تطبيقك. على سبيل المثال ، يمكنك مطالبة المختبرين بتثبيت الإصدارات المتوفرة حديثًا عند بدء التشغيل من خلال تضمين checkForUpdate() في onAppear(perform:) من عرض الجذر لتطبيقك.

يتحقق المثال التالي مما إذا كان المُختبِر قد قام بتمكين التنبيهات أم لا ولديه حق الوصول إلى بنية جديدة ، وإذا كان الأمر كذلك ، يعرض مربع حوار عندما يكون الإصدار متاحًا للتثبيت:

سويفت

ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.
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)
})

ج موضوعية

ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.
[[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() للتحقق مما إذا كان المختبِر لديه حق الوصول إلى إصدار جديد.

سويفت

ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.
// 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
  })
}

ج موضوعية

ملاحظة: هذا المنتج غير متوفر على أهداف macOS أو Mac Catalyst أو tvOS أو watchOS.
// 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 أكثر من مرة