บทแนะนำเริ่มต้นใช้งานนี้จะอธิบายวิธีตั้งค่า Firebase Crashlytics ในแอปด้วย Firebase Crashlytics SDK เพื่อให้คุณได้รับรายงานข้อขัดข้องที่ครอบคลุมในคอนโซล Firebase
การตั้งค่า Crashlytics ต้องใช้ทั้งงานในคอนโซล Firebase และ IDE (เช่น การเพิ่มไฟล์การกําหนดค่า Firebase และ Crashlytics SDK) หากต้องการตั้งค่าให้เสร็จสิ้น คุณจะต้องบังคับให้ข้อขัดข้องเกิดขึ้นเพื่อส่งรายงานข้อขัดข้องฉบับแรกไปยัง Firebase
ก่อนเริ่มต้น
เพิ่ม Firebase ลงในโปรเจ็กต์ Apple หากยังไม่ได้ดำเนินการ หากไม่มีแอป Apple คุณสามารถดาวน์โหลดแอปตัวอย่างได้
แนะนํา: หากต้องการรับบันทึกเบรดครัมบ์โดยอัตโนมัติเพื่อทำความเข้าใจการดําเนินการของผู้ใช้ที่ทําให้เกิดข้อขัดข้อง เหตุการณ์ที่ไม่ใช่ข้อขัดข้องร้ายแรง หรือ ANR คุณจะต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase
หากโปรเจ็กต์ Firebase ที่มีอยู่ไม่ได้เปิดใช้ Google Analytics ให้เปิดใช้ Google Analytics จากแท็บการผสานรวมของ
ในคอนโซล > การตั้งค่าโปรเจ็กต์Firebase หากจะสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
โปรดทราบว่าบันทึกเบรดครัมบ์พร้อมใช้งานสำหรับแพลตฟอร์ม Apple ทั้งหมดที่ Crashlytics รองรับ ยกเว้น watchOS
ขั้นตอนที่ 1: เพิ่ม Crashlytics SDK ลงในแอป
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase
- เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
- เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase SDK สําหรับแพลตฟอร์ม Apple ดังนี้
- เลือกคลัง Crashlytics
- หากต้องการใช้ประโยชน์จากบันทึกเบรดครัมบ์ ให้เพิ่ม Firebase SDK สําหรับ Google Analytics ลงในแอปด้วย ตรวจสอบว่าได้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว
- เพิ่ม Flag
-ObjC
ลงในส่วน Other Linker Flags ของการตั้งค่าบิลด์เป้าหมาย - (macOS เท่านั้น) ใน
Info.plist
ให้เพิ่มคีย์NSApplicationCrashOnExceptions
แล้วตั้งค่าเป็นYES
- เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
https://github.com/firebase/firebase-ios-sdk.git
ถัดไป ให้กําหนดค่าโมดูล Firebase โดยทําดังนี้
นําเข้าโมดูล Firebase ในโครงสร้าง
App
หรือUIApplicationDelegate
Swift
import Firebase
Objective-C
@import Firebase;
กำหนดค่า
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, ประมวลผล และอัปโหลดไฟล์โดยอัตโนมัติทุกครั้งที่คุณสร้างแอป
เปิดเวิร์กสเปซ Xcode ของโปรเจ็กต์ แล้วเลือกไฟล์โปรเจ็กต์ในเครื่องมือนำทางด้านซ้าย
เลือกเป้าหมายการสร้างหลักจากรายการ TARGETS
คลิกแท็บการตั้งค่าการสร้าง แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode สร้าง dSYM สำหรับบิลด์
คลิกทั้งหมด แล้วค้นหา
debug information format
ตั้งค่ารูปแบบข้อมูลการแก้ไขข้อบกพร่องเป็น
DWARF with dSYM File
สำหรับประเภทบิลด์ทั้งหมด
คลิกแท็บระยะการสร้าง แล้วทำตามขั้นตอนต่อไปนี้เพื่อให้ Xcode ประมวลผล dSYM และอัปโหลดไฟล์ได้
คลิก
> ระยะการเรียกใช้สคริปต์ใหม่ตรวจสอบว่าระยะเรียกใช้สคริปต์ใหม่นี้เป็นระยะการสร้างล่าสุดของโปรเจ็กต์ มิเช่นนั้น Crashlytics จะประมวลผล dSYM อย่างไม่ถูกต้อง
ขยายส่วนเรียกใช้สคริปต์ใหม่
ในช่องสคริปต์ (ใต้ป้ายกำกับ Shell) ให้เพิ่มสคริปต์เรียกใช้ต่อไปนี้
สคริปต์นี้จะประมวลผลไฟล์ dSYM ของโปรเจ็กต์และอัปโหลดไฟล์ไปยัง Crashlytics
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
ในส่วนไฟล์อินพุต ให้เพิ่มเส้นทางไปยังตำแหน่งของไฟล์ต่อไปนี้
${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 คุณต้องบังคับให้เกิดการทดสอบข้อขัดข้อง
เพิ่มโค้ดลงในแอปที่คุณสามารถใช้เพื่อบังคับให้เกิดการทดสอบข้อขัดข้อง
คุณสามารถใช้โค้ดต่อไปนี้เพื่อเพิ่มปุ่มลงในแอปซึ่งจะทําให้แอปขัดข้องเมื่อกด ปุ่มมีป้ายกำกับว่า "ทดสอบข้อขัดข้อง"
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
สร้างและเรียกใช้แอปใน Xcode โดยยกเลิกการเชื่อมต่อโปรแกรมแก้ไขข้อบกพร่องของ Xcode
คลิก
สร้างแล้วเรียกใช้รูปแบบปัจจุบันเพื่อสร้างแอปในอุปกรณ์ทดสอบหรือเครื่องจำลองรอจนกว่าแอปจะทํางาน จากนั้นคลิกCrashlytics
หยุดการเรียกใช้รูปแบบหรือการดำเนินการเพื่อปิดอินสแตนซ์เริ่มต้นของแอป อินสแตนซ์เริ่มต้นนี้รวมถึงโปรแกรมแก้ไขข้อบกพร่องที่รบกวน
บังคับให้เกิดการขัดข้องในการทดสอบเพื่อส่งรายงานข้อขัดข้องแรกของแอป
เปิดแอปจากหน้าจอหลักของอุปกรณ์ทดสอบหรือเครื่องจำลอง
ในแอป ให้กดปุ่ม "ทดสอบข้อขัดข้อง" ที่คุณเพิ่มโดยใช้โค้ดด้านบน
หลังจากแอปขัดข้อง ให้เรียกใช้แอปอีกครั้งจาก Xcode เพื่อให้แอปส่งรายงานข้อขัดข้องไปยัง Firebase ได้
ไปที่หน้าแดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูข้อขัดข้องในการทดสอบ
หากรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นการทดสอบขัดข้องหลังจากผ่านไป 5 นาที ให้เปิดใช้การบันทึกการแก้ไขข้อบกพร่องเพื่อดูว่าแอปส่งรายงานข้อขัดข้องหรือไม่
เท่านี้ก็เรียบร้อย ตอนนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง ไปที่หน้าแดชบอร์ด Crashlytics เพื่อดูและตรวจสอบรายงานและสถิติทั้งหมด
ขั้นตอนถัดไป
- ปรับแต่งการตั้งค่ารายงานข้อขัดข้องโดยเพิ่มการรายงานแบบเลือกใช้ บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง