เริ่มต้นใช้งาน Firebase Crashlytics

การเริ่มต้นอย่างรวดเร็วนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase

การตั้งค่า Crashlytics จะต้องมีงานทั้งในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกำหนดค่า Firebase และ Crashlytics SDK) ในการตั้งค่าให้เสร็จสิ้น คุณจะต้องบังคับให้เกิดข้อขัดข้องการทดสอบเพื่อส่งรายงานข้อขัดข้องรายการแรกไปยัง Firebase

ก่อนเริ่มต้น

  1. เพิ่ม Firebase ในโปรเจ็กต์ Apple หากยังไม่ได้ทำ หากไม่มีแอป Apple คุณดาวน์โหลดแอปตัวอย่างได้

  2. แนะนำ: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการดำเนินการของผู้ใช้ซึ่งนำไปสู่เหตุการณ์ข้อขัดข้อง ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase

    • หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics คุณสามารถเปิดใช้ Google Analytics ได้จากแท็บการผสานรวมของ > การตั้งค่าโปรเจ็กต์ในคอนโซล Firebase

    • หากคุณกำลังสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์

    โปรดทราบว่าบันทึกเบรดครัมบ์จะพร้อมใช้งานสำหรับแพลตฟอร์ม Apple ทุกแพลตฟอร์มที่ Crashlytics รองรับ ยกเว้น watchOS

ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป

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

  1. ใน Xcode ให้เปิดโปรเจ็กต์แอปแล้วไปที่ File > Add Packages
  2. เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK สำหรับแพลตฟอร์ม Apple ของ Firebase โดยทำดังนี้
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. เลือกไลบรารี Crashlytics
  5. หากต้องการใช้ประโยชน์จากบันทึกเบรดครัมบ์ ให้เพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปด้วย ให้ตรวจสอบว่าได้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
  6. เพิ่มแฟล็ก -ObjC ในส่วน แฟล็ก Linker อื่นๆ ของการตั้งค่าบิลด์ของเป้าหมาย
  7. (macOS เท่านั้น) ใน Info.plist ให้เพิ่มคีย์ NSApplicationCrashOnExceptions และตั้งค่าเป็น YES
  8. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ

ถัดไป ให้กำหนดค่าโมดูล Firebase ดังนี้

  1. นำเข้าโมดูล Firebase ในโครงสร้าง App หรือ UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. กำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp ซึ่งโดยทั่วไปจะอยู่ในเมธอด application(_:didFinishLaunchingWithOptions:) ของผู้รับมอบสิทธิ์แอปดังนี้

    Swift

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

    Objective-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

ขั้นตอนที่ 2: ตั้งค่า Xcode เพื่ออัปโหลดไฟล์ dSYM โดยอัตโนมัติ

Crashlytics ต้องใช้ไฟล์สัญลักษณ์การแก้ไขข้อบกพร่อง (dSYM) ของโปรเจ็กต์เพื่อสร้างรายงานข้อขัดข้องที่มนุษย์อ่านได้ ขั้นตอนต่อไปนี้อธิบายวิธีกำหนดค่า Xcode เพื่อสร้าง dSYM โดยอัตโนมัติ ประมวลผล และอัปโหลดไฟล์ทุกครั้งที่คุณสร้างแอป

  1. เปิดพื้นที่ทำงาน Xcode ของโปรเจ็กต์ จากนั้นเลือกไฟล์โปรเจ็กต์ในตัวนําทางด้านซ้าย

  2. จากรายการเป้าหมาย ให้เลือกเป้าหมายบิลด์หลักของคุณ

  3. คลิกแท็บการตั้งค่าบิลด์ จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์

    1. คลิกทั้งหมด แล้วค้นหา debug information format

    2. ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น DWARF with dSYM File สำหรับประเภทบิลด์ทั้งหมด

  4. คลิกแท็บ Build Phases จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode ประมวลผล dSYM และอัปโหลดไฟล์ได้

    1. คลิก > ระยะของสคริปต์ที่เรียกใช้ใหม่

      ตรวจสอบว่าระยะเรียกใช้สคริปต์ใหม่นี้เป็นเฟสของบิลด์สุดท้ายของโปรเจ็กต์ มิฉะนั้น Crashlytics จะประมวลผล dSYM ที่ไม่ถูกต้องไม่ได้

    2. ขยายส่วนเรียกใช้สคริปต์ใหม่

    3. ในช่องสคริปต์ (อยู่ใต้ป้ายกำกับเชลล์) ให้เพิ่มสคริปต์การเรียกใช้ต่อไปนี้

      สคริปต์นี้จะประมวลผลไฟล์ dSYM ของโปรเจ็กต์และอัปโหลดไฟล์ไปยัง Crashlytics

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. ในส่วนไฟล์อินพุต ให้เพิ่มเส้นทางสำหรับตำแหน่งของไฟล์ต่อไปนี้

      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
      $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
      $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

สำหรับข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับไฟล์ dSYM และ Crashlytics (รวมถึงวิธีอัปโหลดไฟล์ dSYM ด้วยตนเอง) โปรดไปที่รับรายงานข้อขัดข้องที่ถอดรหัสซอร์สโค้ดที่สร้างความสับสน

ขั้นตอนที่ 3: บังคับให้เกิดข้อขัดข้องจากการทดสอบเพื่อตั้งค่าให้เสร็จสิ้น

คุณต้องบังคับให้เกิดข้อขัดข้องทดสอบเพื่อตั้งค่า Crashlytics ให้เสร็จสมบูรณ์และดูข้อมูลเริ่มต้นในแดชบอร์ด Crashlytics ของคอนโซล Firebase

  1. เพิ่มโค้ดลงในแอปเพื่อบังคับให้การทดสอบขัดข้อง

    คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอป ซึ่งเมื่อกดปุ่มจะทำให้เกิดข้อขัดข้อง ปุ่มนี้มีป้ายกำกับว่า "ทดสอบข้อขัดข้อง"

    รหัส SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    Swift

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          let button = UIButton(type: .roundedRect)
          button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
          button.setTitle("Test Crash", for: [])
          button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashButtonTapped(_ sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }
    

    Objective-C

    #import "ViewController.h"
    
    @implementation ViewController
    ‐ (void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    ‐ (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
    
  2. สร้างและเรียกใช้แอปใน Xcode โดยยกเลิกการเชื่อมต่อโปรแกรมแก้ไขข้อบกพร่อง Xcode แล้ว

    1. คลิกสร้างแล้วเรียกใช้รูปแบบปัจจุบันเพื่อสร้างแอปในอุปกรณ์หรือโปรแกรมจำลองทดสอบ

    2. รอจนกว่าแอปจะทำงาน แล้วคลิก หยุดเรียกใช้รูปแบบหรือการดำเนินการเพื่อปิดอินสแตนซ์เริ่มต้นของแอป อินสแตนซ์เริ่มต้นนี้มีโปรแกรมแก้ไขข้อบกพร่องที่รบกวน Crashlytics ด้วย

  3. บังคับใช้ข้อขัดข้องจากการทดสอบเพื่อส่งรายงานข้อขัดข้องรายการแรกของแอป

    1. เปิดแอปจากหน้าจอหลักของอุปกรณ์ทดสอบหรือเครื่องจำลอง

    2. ในแอป ให้กดปุ่ม "ทดสอบข้อขัดข้อง" ที่คุณเพิ่มโดยใช้รหัสด้านบน

    3. หลังจากที่แอปขัดข้อง ให้เรียกใช้อีกครั้งจาก Xcode เพื่อให้แอปส่งรายงานข้อขัดข้องไปยัง Firebase ได้

  4. ไปที่แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ

    หากคุณได้รีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นข้อขัดข้องการทดสอบหลังผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่องเพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่


เท่านี้ก็เรียบร้อย Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่แดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด

ขั้นตอนถัดไป