เริ่มต้นใช้งาน Crashlytics สำหรับแพลตฟอร์ม Apple

เลือกแพลตฟอร์ม iOS+ Android Android NDK Flutter Unity


คู่มือนี้อธิบายวิธีเริ่มต้นใช้งาน Firebase Crashlytics ในแอปแพลตฟอร์ม Apple (เช่น แอป iOS)

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

หากต้องการความช่วยเหลือจาก AI ให้คัดลอกพรอมต์ด้านล่างลงใน Agent การเขียนโค้ด AI (เช่น Antigravity, Claude Code, Codex และ Cursor) คุณสามารถปรับแต่งพรอมต์และปรับปรุงซ้ำๆ กับ Agent ได้ ดูข้อมูลการติดตั้งโดยละเอียดได้ที่ทักษะเอเจนต์ Firebase

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up Firebase Crashlytics for my app.

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

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

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

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

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

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

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

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

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

  1. ใน Xcode ขณะที่โปรเจ็กต์แอปเปิดอยู่ ให้ไปที่ไฟล์ > เพิ่มแพ็กเกจ
  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 ของการตั้งค่าบิลด์ของเป้าหมาย
  7. (macOS เท่านั้น) ใน Info.plist ให้เพิ่มคีย์ NSApplicationCrashOnExceptions และตั้งค่าเป็น YES
  8. เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ

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

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

    Swift

    import Firebase

    Objective-C

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

    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. จากรายการ TARGETS ให้เลือกเป้าหมายบิลด์หลัก

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

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

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

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

    1. คลิก > New Run Script Phase

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

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

    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)
      หากคุณมี ENABLE_USER_SCRIPT_SANDBOXING=YES และ ENABLE_DEBUG_DYLIB=YES ในการตั้งค่าบิลด์ของโปรเจ็กต์ ให้ใส่ข้อมูลต่อไปนี้
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

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

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

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

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

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

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

  4. ในคอนโซล Firebase ให้ไปที่แดชบอร์ด DevOps และการมีส่วนร่วม > Crashlytics เพื่อตรวจสอบรายงานข้อขัดข้องทดสอบ

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


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

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