เริ่มต้นใช้งาน 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 เพื่อติดตั้งและจัดการการพึ่งพา Firebase

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

จากนั้นกำหนดค่าโมดูล Firebase:

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

    สวิฟท์

    import Firebase

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

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

    สวิฟท์

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

    วัตถุประสงค์-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. คลิกแท็บ ระยะการสร้าง จากนั้นทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สามารถประมวลผล dSYM ของคุณและอัพโหลดไฟล์ได้

    1. คลิก > เฟสสคริปต์การรันใหม่

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

    2. ขยายส่วน Run Script ใหม่

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

      สคริปต์นี้ประมวลผลไฟล์ 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

    สวิฟท์

    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]
      }
    }
    

    วัตถุประสงค์-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. คลิก Build จากนั้นเรียกใช้รูปแบบปัจจุบัน เพื่อสร้างแอปของคุณบนอุปกรณ์ทดสอบหรือโปรแกรมจำลอง

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

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

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

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

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

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

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


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

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