Это приложение Ionic с кодом, написанным на нативном языке. Он использует cordova-plugin-firebase , что для регистрации Crashlytics.
В родной части для iOS мы также пытаемся использовать Crashlytics, чтобы включить ведение журнала. Однако независимо от того, что я пытаюсь сделать, журналы, отправленные с помощью CLSLogv
, не видны на панели инструментов.
Вот мой код.
@objc(ImageUpload) class ImageUpload : CDVPlugin {
var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid
//https://docs.fabric.io/apple/crashlytics/enhanced-reports.html#custom-logging-in-swift
private func sendErrorToCrashlytics(error: String) {
NSLog("Error in send error function is \(error)")
CLSLogv("%@", getVaList([error]))
}
@objc(imageUpload:)
func imageUpload(command: CDVInvokedUrlCommand) {
registerBackgroundTask()
func execute() {
let db = SQLiteDatabase()
var recToUpLoad: PayloadModel? = nil
while(toCheck) {
do {
let record = try db.readValues() // THIS METHOD THROWS EXCEPTION
} catch Exceptions.SQLiteError(let error) {
self.sendErrorToCrashlytics(error: error) // IT COMES HERE AFTER EXCEPTION
}
}
}
DispatchQueue(label: "imageUploadPlugin",qos: .background).async
{
execute()
}
}
}
Однако CLSLogv
вообще не виден в Crashlytics. Однако, когда я делаю Crashlytics.sharedInstance().throwException()
, я вижу это на приборной панели.
Исключения составляет enum
enum Exceptions: Error {
case SQLiteError(message: String)
case JSONError(message: String)
}