Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

อัปเกรดเป็น Firebase Crashlytics SDK

ตอนนี้คุณสามารถตั้งค่า Crashlytics ในแอปของคุณได้แล้วโดยใช้ Firebase Crashlytics SDK ใหม่อย่างเป็นทางการซึ่งนำเสนอ API ที่ได้รับการปรับปรุงให้สอดคล้องกับผลิตภัณฑ์ Firebase อื่น ๆ และใช้งานง่ายมากขึ้น คู่มือนี้อธิบายถึงวิธีการอัปเกรดเป็น SDK ใหม่จาก Fabric Crashlytics SDK โดยอธิบายถึงการเปลี่ยนแปลงที่มาพร้อมกับ API ใหม่เหตุผลของการเปลี่ยนแปลงและวิธีอัปเดตโค้ดของคุณหากจำเป็น

หากคุณเพิ่งย้ายแอปจาก Fabric ให้ตรวจสอบว่าการอัปเกรดเป็น Firebase Crashlytics SDK ส่งผลต่อข้อมูล การวิเคราะห์ข้อขัดข้อง ของคุณอย่างไร

ขั้นตอนที่ 1 : เพิ่มไฟล์การกำหนดค่า Firebase

  1. เปิด การตั้งค่าโครงการ ของคุณ ในการ์ด แอปของคุณ ให้เลือกรหัสชุดของแอปที่คุณต้องการไฟล์กำหนดค่า
  2. คลิก ดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่า Firebase iOS ของคุณ ( GoogleService-Info.plist )

    • คุณสามารถดาวน์โหลดไฟล์กำหนดค่า Firebase iOS อีกครั้งได้ทุกเมื่อ

    • ตรวจสอบว่าชื่อไฟล์กำหนดค่าไม่ได้ต่อท้ายด้วยอักขระเพิ่มเติมเช่น (2)

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

หากคุณมีรหัสบันเดิลหลายรายการในโปรเจ็กต์คุณต้องเชื่อมโยงรหัสบันเดิลแต่ละรายการกับแอปที่ลงทะเบียนในคอนโซล Firebase เพื่อให้แต่ละแอปมีไฟล์ GoogleService-Info.plist เป็นของตัวเอง

ขั้นตอนที่ 2 : เพิ่ม Firebase Crashlytics SDK

  1. ใน Cocoapods เปลี่ยนพ็อด Fabric และ Crashlytics ด้วย Firebase/Crashlytics pod ในทุกเป้าหมาย ตรวจสอบว่าคุณได้เพิ่มเวอร์ชัน 4.0.0 ขึ้นไป (ซึ่งจำเป็นสำหรับรายงานข้อขัดข้องของคุณจึงจะปรากฏในคอนโซล Firebase)

    # Add the pod for Firebase Crashlytics
    pod 'Firebase/Crashlytics'
    # Recommended: Add the Firebase pod for Google Analytics pod 'Firebase/Analytics'
  2. ถอนการติดตั้งหรือลบการอ้างอิงของบุคคลที่สามออกจาก Fabric โดยตรงเช่นการอ้างอิงจาก Fabric Answers และชุดของบุคคลที่สาม

  3. ติดตั้งและอัปเดตพ็อดจากนั้นเปิดไฟล์. xcworkspace เพื่อดูโปรเจ็กต์ใน Xcode:

    pod install
    open your-project.xcworkspace

ขั้นตอนที่ 3 : อัปเดตรหัสของคุณ

  1. ใน Xcode ให้สร้างแอปของคุณใหม่จากนั้นเปิดไฟล์. xcworkspace ใหม่อีกครั้ง

  2. ตรวจสอบการเปลี่ยนแปลง SDK ต่อไปนี้และทำการปรับปรุงที่เหมาะสมกับโค้ดของคุณ:


ขณะนี้สคริปต์สัญลักษณ์การเรียกใช้และการอัปโหลดอยู่ใน FirebaseCrashlytics

ตอนนี้คุณสามารถเข้าถึงสคริปต์ upload-symbols การ run และการ upload-symbols จากไลบรารี FirebaseCrashlytics ใหม่ โปรดทราบว่าคุณยังสามารถเรียก upload-symbols จากทุกที่ในกระบวนการสร้างของคุณเพื่ออัปโหลด dSYM ของคุณด้วยตนเอง

นอกจากนี้ API_KEY และ BUILD_SECRET จะไม่รวมอยู่ใน SDK ใหม่อีกต่อไป แต่ตอนนี้ Crashlytics ใช้ GoogleService-info.plist ของแอปของคุณเพื่อเชื่อมโยงแอปของคุณกับโครงการ Firebase และเก็บข้อมูลข้อขัดข้องในอดีต

SDK ผ้า

${PODS_ROOT}/Fabric/run API_KEY BUILD_SECRET
/path/to/pods/directory/Fabric/upload-symbols

Firebase Crashlytics SDK

${PODS_ROOT}/FirebaseCrashlytics/run
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols

เหตุผลในการเปลี่ยนแปลง

Crashlytics ไม่ใช้ Fabric SDK เป็นที่พึ่งอีกต่อไปดังนั้นเราจึงย้ายเครื่องมือ CLI ไปยังไลบรารีใหม่


ปัจจุบันไลบรารี Crashlytics เรียกว่า FirebaseCrashlytics

ในแอปของคุณอัปเดตเส้นทางการนำเข้าของคุณ:

SDK ผ้า

รวดเร็ว

import Crashlytics

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

@import Crashlytics

Firebase Crashlytics SDK

รวดเร็ว

import FirebaseCrashlytics

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

@import FirebaseCrashlytics

เหตุผลในการเปลี่ยนแปลง

การอัปเดตชื่อไลบรารี Crashlytics ทำให้สอดคล้องกับไลบรารี Firebase อื่น ๆ (เช่น FirebaseFirestore และ FirebaseAuth )


FirebaseCrashlytics ใช้กับ Fabric SDK ไม่ได้อีกต่อไป

ตอนนี้ FirebaseCrashlytics สามารถเริ่มต้นได้ด้วย Firebase Crashlytics SDK เท่านั้น คุณสามารถเริ่มอินสแตนซ์ของ FirebaseCrashlytics โดยเรียก FirebaseApp.configure ใน Swift หรือ [FIRApp configure] ใน Objective-C

ภายใน application:didFinishLaunchingWithOptions ของคุณ application:didFinishLaunchingWithOptions แทนที่การเรียก Fabric.with และ startWithAPIKey ด้วยการเรียก FirebaseApp :

SDK ผ้า

รวดเร็ว

Fabric.with([Crashlytics.self])

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

[Fabric with:@[[Crashlytics class]]];
+ startWithAPIKey:
+ startWithAPIKey:delegate:

Firebase Crashlytics SDK

รวดเร็ว

FirebaseApp.configure()

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

[FIRApp configure];

เหตุผลในการเปลี่ยนแปลง

การใช้วิธีการใหม่ในการเริ่มต้น Crashlytics จะสอดคล้องกับวิธีการเริ่มต้นบริการ Firebase อื่น ๆ


วิธีการ crash และ throwException จะถูกลบออก

SDK ใหม่ไม่มี throwException crash หรือ throwException อีกต่อไป ให้ใช้ fatalError ใน Swift หรืออาร์เรย์ว่างใน Objective-C เพื่อบังคับให้เกิดข้อขัดข้อง

Firebase Crashlytics SDK

รวดเร็ว

// Force a test crash
fatalError()

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

// Force a test crash
@[][1];

เหตุผลในการเปลี่ยนแปลง

ข้อขัดข้องประเภทต่างๆอาจเกิดขึ้นได้จากหลายสาเหตุและวิธีการเหล่านี้ไม่ได้ระบุอย่างชัดเจนว่าข้อขัดข้องที่เกิดขึ้นระหว่างรันไทม์หรือใน SDK ดั้งเดิมของแอปของคุณ


เมธอด sharedInstance ตอนนี้มีชื่อว่า crashlytics

SDK ใหม่ไม่รวมเมธอด sharedInstance อีกต่อไป ในการเริ่มต้น Crashlytics ให้ใช้ crashlytics แทน (อ่านเอกสารอ้างอิงสำหรับ Swift หรือ Objective-C สำหรับข้อมูลเพิ่มเติม) ในตัวแทนของแอปของคุณให้อัปเดตสคริปต์การเริ่มต้นของคุณ:

SDK ผ้า

รวดเร็ว

Crashlytics.sharedInstance()

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

[Crashlytics sharedInstance];

Firebase Crashlytics SDK

รวดเร็ว

Crashlytics.crashlytics()

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

[FIRCrashlytics crashlytics];

เหตุผลในการเปลี่ยนแปลง

เราตั้งชื่อใหม่ว่าวิธีการ getter อินสแตนซ์เพื่อให้สอดคล้องกับ Firebase SDK อื่น ๆ


Crashlytics จะไม่หมุน ID อีกต่อไปเมื่อรหัสโฆษณาเปลี่ยนไป

ตอนนี้ Crashlytics ใช้ รหัสการติดตั้ง Firebase (FID) แทนรหัสโฆษณาเพื่อระบุอินสแตนซ์ของแอปของคุณและเชื่อมโยงข้อมูลของผู้ใช้กับอุปกรณ์ของพวกเขา

เหตุผลในการเปลี่ยนแปลง

การใช้ FID นั้นสอดคล้องกับ Firebase SDK อื่น ๆ ตอนนี้คุณสามารถ จัดการข้อมูลการติดตั้ง Firebase ในบริการอื่น ๆ ของ Firebase ได้อย่างสม่ำเสมอ


setUserIdentifier ตอนนี้ setUserID setUserName และ setUserEmail จะถูกลบออก

ก่อนหน้านี้คุณสามารถตั้งชื่อหรืออีเมลที่เกี่ยวข้องกับข้อขัดข้องโดยใช้ setUserName และ setUserEmail แต่วิธีการเหล่านี้จะไม่ถูกกำหนดอีกต่อไป วิธีใหม่ที่ต้องการในการ ตั้งค่า ID สำหรับผู้ใช้ของคุณ คือการใช้ setUserID

SDK ผ้า

รวดเร็ว

Crashlytics.sharedInstance().setUserIdentifier("user_id")

Crashlytics.sharedInstance().setUserEmail("user_email")

Crashlytics.sharedInstance().setUserName("user_name")

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

[[Crashlytics sharedInstance] setUserIdentifier:@"user_id"];

[[Crashlytics sharedInstance] setUserEmail:@"user_email"];

[[Crashlytics sharedInstance] setUserName:@"user_name"];

Firebase Crashlytics SDK

รวดเร็ว

Crashlytics.crashlytics().setUserID("user_id")

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

[[FIRCrashlytics crashlytics] setUserID:@"user_id"];

เหตุผลในการเปลี่ยนแปลง

เราใช้ชื่อเมธอด setUserID เพื่อให้สอดคล้องกับ Firebase API อื่น ๆ และลบ setUserName และ setUserEmail เพื่อไม่ให้บันทึก PII ผ่าน Crashlytics


CLSLogv และ CLSNSLogv ถูกแทนที่ด้วยฟังก์ชันการบันทึก

SDK ใหม่ไม่รวมถึง CLSLogv หรือ CLSNSLogv ฟังก์ชั่น ในการ เพิ่มข้อความบันทึกแบบกำหนดเอง ให้ใช้วิธีการบันทึกใหม่ในไลบรารี Crashlytics โปรดทราบว่าวิธีการใหม่จะไม่พิมพ์ไปยัง stdout หรือ NSLog อีกต่อไป (เราขอแนะนำให้เขียน Wrapper หากคุณต้องการคงพฤติกรรมนี้ไว้)

SDK ผ้า

รวดเร็ว

CLSLogv("%@, %@", getVaList([first_arg, second_arg]))

CLSNSLogv("%@, %@", getVaList([first_arg, second_arg]))

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

CLSLog(@"%@, %@", first_arg, second_arg);
CLSNSLog(@"%@, %@", first_arg, second_arg);

CLSLogv(@"%@, %@", args_va_list);
CLSNSLogv(@"%@, %@", args_va_list);

CLS_LOG(@"%@, %@", first_arg, second_arg);

Firebase Crashlytics SDK

รวดเร็ว

Crashlytics.crashlytics().log("\(first_arg), \(second_arg)")

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList([first_arg, second_arg]))

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

[[FIRCrashlytics crashlytics] log:@"first_arg, second_arg"];

[[FIRCrashlytics crashlytics] logWithFormat:@"%@, %@", first_arg, second_arg];

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

#define CLS_LOG(__FORMAT__, ...) [[FIRCrashlytics crashlytics] logWithFormat:@"%s line %d $ " __FORMAT__, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__]

เหตุผลในการเปลี่ยนแปลง

วิธีการใหม่ต้องใช้อินสแตนซ์ซึ่งช่วยให้ทดสอบโค้ดได้ง่ายขึ้น


setCustomValue จะแทนที่ setObjectValue, setIntValue, setFloatValue และ setBoolValue

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

SDK ผ้า

รวดเร็ว

Crashlytics.sharedInstance().setObjectValue("value", forKey: "object_key")

Crashlytics.sharedInstance().setIntValue(100, forKey: "int_key")

Crashlytics.sharedInstance().setFloatValue(99.9, forKey: "float_key")

Crashlytics.sharedInstance().setBoolValue(true, forKey: "bool_key")

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

[[Crashlytics sharedInstance] setObjectValue:@"key" forKey:@"object_key"];

[[Crashlytics sharedInstance] setIntValue:100 forKey:@"int_key"];

[[Crashlytics sharedInstance] setFloatValue:99.9 forKey:@"float_key"];

[[Crashlytics sharedInstance] setBoolValue:YES forKey:@"bool_key"];

Firebase Crashlytics SDK

รวดเร็ว

Crashlytics.crashlytics().setCustomValue("value", forKey: "object_key")

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

Crashlytics.crashlytics().setCustomValue(99.9, forKey: "float_key")

Crashlytics.crashlytics().setCustomValue(true, forKey: "bool_key")

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

[[FIRCrashlytics crashlytics] setCustomValue:@"value" forKey:@"object_key"];

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

[[FIRCrashlytics crashlytics] setCustomValue:@(99.9) forKey:@"float_key"];

[[FIRCrashlytics crashlytics] setCustomValue:@YES forKey:@"bool_key"];

เหตุผลในการเปลี่ยนแปลง

ชื่อวิธีการใหม่เป็นชื่อเฉพาะสำหรับ Crashlytics และทำให้ชัดเจนว่า Crashlytics ไม่สอดคล้องกับคีย์ - ค่า


recordCustomExceptionName: เหตุผล: frameArray: ถูกแทนที่ด้วย Exception Model API

หากแอปของคุณทำงานในสภาพแวดล้อมที่ไม่ใช่เนทีฟ (เช่น JavaScript หรือ Unity) คุณสามารถใช้ Exception Model API เพื่อรายงานข้อมูลเมตาของข้อขัดข้องในรูปแบบข้อยกเว้นดั้งเดิมของแอปของคุณ

SDK ผ้า

รวดเร็ว

ให้ topFrame = CLSStackFrame () topFrame.symbol = "doSomethingBad" topFrame.fileName = "bad.cc" topFrame.lineNumber = 23

let middleFrame = CLSStackFrame()
middleFrame.symbol = "doOtherStuff"
middleFrame.fileName = "stuff.cc"
middleFrame.lineNumber = 23;

let bottomFrame = CLSStackFrame()
bottomFrame.symbol = "main"
bottomFrame.fileName = "main.cc"
bottomFrame.lineNumber = 123

Crashlytics.sharedInstance().recordCustomExceptionName("FooException",
                                                       reason: "There was a foo.",
                                                       frameArray: [topFrame, middleFrame, bottomFrame])

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

CLSStackFrame *topFrame = [[CLSStackFrame alloc] init];
topFrame.symbol = @"doSomethingBad";
topFrame.fileName = @"bad.cc";
topFrame.lineNumber = 23;

CLSStackFrame *middleFrame = [[CLSStackFrame alloc] init];
middleFrame.symbol = @"doOtherStuff";
middleFrame.fileName = @"stuff.cc";
middleFrame.lineNumber = 23;

CLSStackFrame *bottomFrame = [[CLSStackFrame alloc] init];
bottomFrame.symbol = @"main";
bottomFrame.fileName = @"main.cc";
bottomFrame.lineNumber = 123;

[[Crashlytics sharedInstance] recordCustomExceptionName:@"FooException"
                                                 reason:@"There was a foo."
                                             frameArray:@[topFrame, middleFrame, bottomFrame]];

Firebase Crashlytics SDK

รวดเร็ว

var  ex = ExceptionModel.init(name:"FooException", reason:"There was a foo.")
ex.stackTrace = [
  StackFrame.init(symbol:"makeError" fileName:"handler.js" lineNumber:495),
  StackFrame.init(symbol:"then" fileName:"routes.js" lineNumber:102),
  StackFrame.init(symbol:"main" fileName:"app.js" lineNumber:12),
]

crashlytics.record(exceptionModel:ex)

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

model.stackTrace = @[
  [FIRStackFrame stackFrameWithSymbol:@"makeError" fileName:@"handler.js" lineNumber:495],
  [FIRStackFrame stackFrameWithSymbol:@"then" fileName:@"routes.js" lineNumber:102],
  [FIRStackFrame stackFrameWithSymbol:@"main" fileName:@"app.js" lineNumber:12],
];

เหตุผลในการเปลี่ยนแปลง

คุณลักษณะนี้ได้รับการร้องขอมานานและช่วยให้คุณสามารถขยาย Crashlytics ไปยังแพลตฟอร์มอื่น ๆ เช่น Unity, Flutter หรือ React Native



CrashlyticsDelegate ถูกแทนที่ด้วยวิธีการแยกต่างหากสำหรับจัดการรายงานข้อขัดข้อง

ตอนนี้คุณสามารถใช้ชุดวิธีการใหม่ในการจัดการรายงานข้อขัดข้อง:

  • didFinishLaunchingWithOptions ถูกแทนที่ด้วยตัวจัดการใหม่ checkForUnsentReportsWithCompletion

  • crashlyticsDidDetectReportForLastExecution ถูกแทนที่ด้วย didCrashDuringPreviousExecution didCrashDuringPreviousExecution ช่วยให้คุณตรวจจับข้อขัดข้องที่เกิดขึ้นระหว่างการเรียกใช้แอปครั้งล่าสุดได้อย่างสะดวก

  • crashlyticsCanUseBackgroundSessions ถูกตั้งค่าเป็น true อย่างถาวร

  • เราไม่สนับสนุนการตรวจสอบวัตถุ CLSReport ในผู้รับมอบสิทธิ์อีกต่อไป

โดยค่าเริ่มต้น Crashlytics จะอัปโหลดรายงานข้อขัดข้องโดยอัตโนมัติเมื่อเริ่มต้นและก่อนหน้านี้คุณสามารถเรียกใช้ didFinishLaunchingWithOptions เพื่อให้ผู้ใช้ของคุณ เลือกใช้การรายงานข้อขัดข้องได้ ตอนนี้เมื่อคุณเรียก setCrashlyticsCollectionEnabled=false เพื่อปิดการรายงานข้อขัดข้องอัตโนมัติ Crashlytics จะเรียกใช้ checkForUnsentReportsWithCompletion ซึ่งช่วยให้ผู้ใช้ของคุณเลือกว่าจะส่งรายงานข้อขัดข้องเมื่อแอปของคุณขัดข้องหรือไม่ จากนั้นคุณสามารถเรียก sendUnsentReports หากผู้ใช้เลือกหรือ deleteUnsentReports หากผู้ใช้เลือกไม่ใช้

โปรดทราบว่าคุณยังสามารถเรียก sendUnsentReports และ deleteUnsentReports ภายนอก checkForUnsentReportsWithCompletion ตัวอย่างเช่นคุณอาจต้องการตั้งค่าอย่างถาวรหรือปิดใช้งานการรายงานข้อขัดข้องหากผู้ใช้ของคุณให้การอนุมัติแบบครอบคลุมหรือไม่อนุมัติในการส่งรายงานข้อขัดข้อง โปรดทราบว่าคุณอาจไม่ได้รับรายงานข้อขัดข้องหากแอปของคุณขัดข้องในช่วงต้นของวงจรชีวิต

SDK ผ้า

รวดเร็ว

class YourClassName: CrashlyticsDelegate {

  func application(_ application: UIApplication, didFinishLaunchingWithOptions

    ...
    Crashlytics.sharedInstance().delegate = self
    ...

    return true
  }

  func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
    /* ... handle unsent reports */
  }

  func crashlyticsCanUseBackgroundSessions(_ crashlytics: Crashlytics) -> Bool {
    return true
  }
}

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

@interface YourClassName <CrashlyticsDelegate> ()
@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  ...
  [[Crashlytics sharedInstance] setDelegate:self];
  ...

  return YES;
}

-(void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report completionHandler:(void (^)(BOOL submit))completionHandler {
  // ... handle unsent reports
}

-(BOOL)crashlyticsCanUseBackgroundSessions:(Crashlytics *)crashlytics {
  return YES;
}

@end

Firebase Crashlytics SDK

รวดเร็ว

/* You must set setCrashlyticsCollectionEnabled to false in order to use
checkForUnsentReportsWithCompletion. */

Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)

Crashlytics.crashlytics().checkForUnsentReports { hasUnsentReport in
  let hasUserConsent = false
  // ...get user consent.

  if hasUserConsent && hasUnsentReport {
    Crashlytics.crashlytics().sendUnsentReports()
  } else {
    Crashlytics.crashlytics().deleteUnsentReports()
  }
}

// Detect when a crash happens during your app's last run.
if Crashlytics.crashlytics().didCrashDuringPreviousExecution() {
  // ...notify the user.
}

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

/* You must set setCrashlyticsCollectionEnabled to false in order to use
checkForUnsentReportsWithCompletion. */

[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:false];

[[FIRCrashlytics crashlytics] checkForUnsentReportsWithCompletion:^(BOOL hasUnsentReports) {
  BOOL hasConsent = false;
  // ...get consent from user.

  if (hasConsent && hasUnsentReports) {
    [[FIRCrashlytics crashlytics] sendUnsentReports];
  } else {
    [[FIRCrashlytics crashlytics] deleteUnsentReports];
  }
}];

// Detect when a crash happens during your app's last run.
if ([[FIRCrashlytics crashlytics] didCrashDuringPreviousExecution]) {
  // ...notify the user.
}

เหตุผลในการเปลี่ยนแปลง

ชุดวิธีการใหม่ช่วยให้คุณควบคุมพฤติกรรมการรายงานข้อขัดข้องของแอปได้มากขึ้น นอกจากนี้คุณไม่จำเป็นต้องตั้งค่า CrashlyticsDelegate อีกต่อไปก่อนที่จะเริ่มต้น Crashlytics


firebase_crashlytics_collection_enabled ถูกแทนที่ด้วย FirebaseCrashlyticsCollectionEnabled

เมื่อคุณตั้งค่า FirebaseCrashlyticsCollectionEnabled เป็นเท็จใน Info.plist ของคุณ Crashlytics จะหยุดส่งรายงานข้อขัดข้องโดยอัตโนมัติเมื่อเริ่มต้น หลังจากเรียกใช้แอปครั้งแรกคุณสามารถปิดใช้งานการรายงานข้อขัดข้องได้โดยตั้งค่า setCrashlyticsCollectionEnabled false ใน Crashlytics.h ของคุณ แต่โปรดทราบว่า setCrashlyticsCollectionEnabled จะแทนที่แฟ setCrashlyticsCollectionEnabled นี้

ปิดการรวบรวมอัตโนมัติโดยการแทนที่คีย์ firebase_crashlytics_collection_enabled ใน Info.plist ของคุณ:

  • คีย์: FirebaseCrashlyticsCollectionEnabled

  • ค่า: false

หลังจากการเรียกใช้แอปครั้งแรกคุณยังสามารถปิดการรวบรวมอัตโนมัติได้โดยเพิ่มสิ่งต่อไปนี้ใน Crashlytics.h

Firebase Crashlytics SDK

รวดเร็ว

// setCrashlyticsCollectionEnabled is set to true by default.
Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(false)

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

// setCrashlyticsCollectionEnabled is set to true by default.
[[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:false];

เหตุผลในการเปลี่ยนแปลง

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


ตอนนี้ Crashlytics ใช้เซสชันพื้นหลังเสมอ

ก่อนหน้านี้คุณสามารถปิดเซสชันพื้นหลังได้หากไม่ต้องการสนับสนุนในแอปของคุณโดยตั้งค่า crashlyticsCanUseBackgroundSessions เป็น false ตอนนี้ crashlyticsCanUseBackgroundSessions ถูกตั้งค่าเป็น true เสมอ

เหตุผลในการเปลี่ยนแปลง

เราไม่รองรับ iOS เวอร์ชันต่ำกว่า 7.0 หรือ macOS เวอร์ชันที่ต่ำกว่า OS X 10.9 อีกต่อไปซึ่งไม่รองรับเซสชันพื้นหลัง


Crashlytics สามารถใช้ได้เฉพาะข้อมูลที่รวบรวมโดย Google Analytics

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

ไปที่ เริ่มต้นใช้งาน Google Analytics เพื่อเรียนรู้วิธีเพิ่ม Google Analytics ในแอปของคุณ หากคุณเคยใช้ Fabric Answers มาก่อนดูวิธี แปลงเหตุการณ์ Answers เป็นเหตุการณ์ Analytics

Reason for change

We now offer Google Analytics to help you get more insight into your crash data. With Analytics, you can continue gathering stats for your app in the Firebase console.

Next steps