قم بإعداد تنبيهات بناء جديدة داخل التطبيق باستخدام App Distribution SDK

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

قبل ان تبدأ

إذا كنت لم تقم بذلك بالفعل، إضافة إلى Firebase المشروع الذي يعمل بنظام iOS .

الخطوة 1: تمكين التطبيق توزيع تستر API

  1. حدد مشروعك في وحدة التحكم سحابة جوجل .

  2. تحت Firebase التطبيقات API اختبار، انقر فوق تمكين.

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

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

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

  3. ترميز جوجل الخاص بك ID التطبيق (مطلوب فقط لإصدارات دائرة الرقابة الداخلية 9 و 10):

    قم بتشفير معرف تطبيق Google الخاص بك

    إضافة appdistribution-<encoded-google-app-id> مخطط URL قبل بما في ذلك المقتطف الخاص بك في Info.plist file (يرجى الرجوع إلى وثائق أبل للحصول على تعليمات حول كيفية إضافة مخطط URL في كسكودي):

    <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 الخاص بك عن طريق استبدال النقطتين (:) بالشرطات (-). علما بأن جوجل الخاص بك ID التطبيق يقع في حياتك GoogleService-Info.plist الملف. على سبيل المثال ، إذا كان معرف تطبيق Google الخاص بك هو:

    7:77777777777:ios:123456789

    معرف تطبيق Google المشفر الخاص بك هو:

    7-77777777777-ios-123456789
  4. استيراد وحدة Firebase في حياتك UIApplicationDelegate :

    سويفت

    import Firebase
    

    ج موضوعية

    @import Firebase;
    
  5. تكوين ل FirebaseApp المشتركة المثال، عادة في التطبيق الخاص بك application:didFinishLaunchingWithOptions: الأسلوب:

    سويفت

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

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  6. أخيرًا ، أعد تجميع تطبيقك.

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

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

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

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

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

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

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

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

يمكنك تضمين checkForUpdate في أي لحظة في التطبيق الخاص بك. على سبيل المثال، يمكنك مطالبة اختبار لتثبيت يبني المتوفرة حديثا عند بدء التشغيل من قبل بما في ذلك checkForUpdate في viewDidAppear من UIViewController .

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

التحقق من وجود تنبيهات تمكين:

سويفت

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
})

ج موضوعية

[[FIRAppDistribution appDistribution]
    checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
                                   NSError *_Nullable error) {
// Includes a pre-built enable alerts dialogue that lets your tester enable alerts.
// You can also customize your own user interface that prompts the tester to
// install a newly available distribution (refer to sample code below).
}];

عرض الحوار من أجل تثبيت البناء الجديد:

سويفت

AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
  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) {
  UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Check For Update"
message:[NSString stringWithFormat:@"Error during tester sign in! %@", error.localizedDescription]
preferredStyle:UIAlertControllerStyleAlert];

  UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {}];

  [alert addAction:okAction];
  [self presentViewController:alert animated:YES completion:nil];

  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 ، راجع وثائق مرجعية توزيع التطبيقات ل سويفت و الهدف-C .

الخطوة 4: بناء واختبار التطبيق الخاص بك

وأخيرا، بناء التطبيق واختبار التنفيذ عن طريق توزيع بناء على اختبار باستخدام وحدة تحكم Firebase.

زيارة التطبيقات توزيع دليل استكشاف الأخطاء وإصلاحها للمساعدة في القضايا المشتركة، مثل:

  • لا يتلقى المختبِر تنبيهات داخل التطبيق
  • يُطلب من المختبر تسجيل الدخول إلى Google أكثر من مرة