ตั้งค่าการแจ้งเตือนบิลด์ใหม่ในแอปด้วย App Distribution SDK

Firebase App Distribution SDK ที่ไม่บังคับให้คุณแสดงการแจ้งเตือนในแอปแก่ผู้ทดสอบเมื่อมีการติดตั้งบิวด์ใหม่ของแอป คู่มือนี้จะอธิบายวิธีใช้ App Distribution SDK เพื่อสร้างและปรับแต่งการแจ้งเตือนบิลด์ใหม่สำหรับผู้ทดสอบของคุณ

ก่อนจะเริ่ม

หากคุณยังไม่ได้ เพิ่ม Firebase กับโครงการ iOS ของคุณ

ขั้นตอนที่ 1: เปิดใช้งานการกระจาย App ทดสอบ API

  1. เลือกโครงการของคุณใน คอนโซล Google Cloud

  2. ภายใต้ Firebase App ทดสอบ API คลิกเปิดใช้งาน

ขั้นตอนที่ 2: เพิ่มการกระจาย App แอปของคุณ

ใช้ Swift Package Manager เพื่อติดตั้งและจัดการการพึ่งพา Firebase

  1. ใน Xcode กับโครงการของคุณเปิดแอปนำทางไปยังไฟล์> สวิฟท์แพคเกจ> เพิ่มแพคเกจการพึ่งพา
  2. เมื่อได้รับแจ้ง ให้เพิ่มที่เก็บ SDK ของแพลตฟอร์ม Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. เลือกไลบรารีการแจกจ่ายแอป
  5. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดการพึ่งพาของคุณในเบื้องหลังโดยอัตโนมัติ

ถัดไป ดำเนินการตามขั้นตอนการกำหนดค่าสองสามขั้นตอน:

  1. เข้ารหัสแอป Google ID ของคุณ (จำเป็นต้องใช้เฉพาะสำหรับ iOS รุ่นที่ 9 และ 10):

    เข้ารหัส ID แอป 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>
    

    จากนั้น เข้ารหัส ID แอป Google ของคุณโดยแทนที่เครื่องหมายทวิภาค (:) ด้วยขีดกลาง (-) โปรดทราบว่าแอป Google ID ของคุณตั้งอยู่ในคุณ GoogleService-Info.plist ไฟล์ ตัวอย่างเช่น หากรหัสแอป Google ของคุณคือ:

    7:77777777777:ios:123456789

    รหัสแอป Google ที่เข้ารหัสของคุณคือ:

    7-77777777777-ios-123456789
  2. นำเข้าโมดูล Firebase ในของคุณ UIApplicationDelegate :

    Swift

    หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS

    import Firebase
    

    วัตถุประสงค์-C

    หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS

    @import Firebase;
    
  3. กำหนดค่า FirebaseApp ที่ใช้ร่วมกันเช่นปกติในของแอป application:didFinishLaunchingWithOptions: วิธีการ:

    Swift

    หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS

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

    วัตถุประสงค์-C

    หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. สุดท้าย คอมไพล์แอปของคุณใหม่

ขั้นตอนที่ 3: กำหนดค่าการแจ้งเตือนในแอป

App Distribution SDK มีสองวิธีในการตั้งค่าการแจ้งเตือนบิวด์ในแอปสำหรับผู้ทดสอบของคุณ: การกำหนดค่าการแจ้งเตือนพื้นฐาน ซึ่งมาพร้อมกับกล่องโต้ตอบการลงชื่อเข้าใช้ที่สร้างไว้ล่วงหน้าเพื่อแสดงต่อผู้ทดสอบ และการกำหนดค่าการแจ้งเตือนขั้นสูง ซึ่งช่วยให้คุณ ปรับแต่งส่วนต่อประสานผู้ใช้ (UI) ของคุณเอง เราขอแนะนำให้คุณใช้การกำหนดค่าการแจ้งเตือนพื้นฐานก่อน หากคุณเพิ่งเริ่มใช้ App Distribution SDK

การกำหนดค่าพื้นฐาน

ใช้ checkForUpdate การแสดงที่สร้างไว้ล่วงหน้าช่วยให้การเจรจาการทดสอบที่ยังไม่ได้เปิดใช้งานการแจ้งเตือนการแจ้งเตือนและตรวจสอบหากมีการสร้างใหม่ที่สามารถใช้ได้ เมื่อเรียก เมธอดจะกำหนดลำดับต่อไปนี้:

  1. ตรวจสอบว่าผู้ทดสอบเปิดใช้งานการแจ้งเตือนหรือไม่โดยแจ้งให้พวกเขาลงชื่อเข้าใช้ App Distribution ด้วยบัญชี Google

  2. หากผู้ทดสอบยังไม่ได้เปิดใช้งานการแจ้งเตือน จะแสดงกล่องโต้ตอบที่สร้างไว้ล่วงหน้า

    การเปิดใช้งานการแจ้งเตือนเป็นกระบวนการแบบครั้งเดียวในอุปกรณ์ทดสอบและจะคงอยู่ตลอดการอัปเดตแอปของคุณ การแจ้งเตือนยังคงเปิดใช้งานบนอุปกรณ์ทดสอบจนทั้ง app จะถอนการติดตั้งหรือจนกว่า signOutTester วิธีการที่เรียกว่า ดูเอกสารของวิธีการอ้างอิง ( สวิฟท์ หรือ Objective-C ) สำหรับข้อมูลเพิ่มเติม

  3. ตรวจสอบบิลด์ที่พร้อมใช้งานใหม่สำหรับผู้ทดสอบที่จะติดตั้ง

คุณสามารถรวม checkForUpdate ที่จุดใด ๆ ใน app ของคุณ ตัวอย่างเช่นคุณสามารถแจ้งให้ทดสอบการติดตั้งใหม่พร้อมสร้างที่เริ่มต้นด้วยการรวม checkForUpdate ใน viewDidAppear ของ UIViewController

ตัวอย่างต่อไปนี้จะตรวจสอบว่าผู้ทดสอบได้เปิดใช้งานการแจ้งเตือนและมีสิทธิ์เข้าถึงบิวด์ใหม่หรือไม่ และหากใช่ จะแสดงกล่องโต้ตอบเมื่อบิวด์พร้อมสำหรับการติดตั้ง:

Swift

หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS
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)
})

วัตถุประสงค์-C

หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ MacOS, Mac Catalyst, tvOS หรือเป้าหมาย watchOS
[[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 หรือไม่ ดังนั้นคุณสามารถเลือกให้แสดง UI การลงชื่อเข้าใช้ของคุณเฉพาะสำหรับผู้ทดสอบที่ยังไม่ได้ลงชื่อเข้าใช้ หลังจากที่ผู้ทดสอบลงชื่อเข้าใช้แล้ว คุณสามารถ โทร checkForUpdate เพื่อตรวจสอบว่าผู้ทดสอบที่มีการเข้าถึงการสร้างใหม่

Swift

หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ 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
  })
}

วัตถุประสงค์-C

หมายเหตุ: ผลิตภัณฑ์นี้ไม่สามารถใช้ได้กับ 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 ดูเอกสารอ้างอิง App จำหน่าย สวิฟท์ และ วัตถุประสงค์ -C

ขั้นตอนที่ 4: การสร้างและการทดสอบการใช้งานของคุณ

สุดท้ายสร้าง app ของคุณและทดสอบการใช้งานของคุณโดยการ กระจายการสร้าง การทดสอบโดยใช้คอนโซล Firebase

เยี่ยมชม คู่มือการแก้ไขปัญหาการแพร่กระจาย App สำหรับความช่วยเหลือเกี่ยวกับปัญหาที่พบบ่อยเช่น:

  • ผู้ทดสอบไม่ได้รับการแจ้งเตือนในแอป
  • ผู้ทดสอบได้รับแจ้งให้ลงชื่อเข้าใช้ Google มากกว่าหนึ่งครั้ง