Как распечатать индивидуальный журнал в Crashlytics Swift?

У нас есть файл установки pod для Fabric и Crashlytics, который импортирован в делегат приложения. Fabric.with([Crashlytics.self, Branch.self]) в функции didFinishLaunchingWithOptions. Это работает нормально. Но я хочу напечатать, какое действие может быть нажато пользователем. Например) Нажата кнопка входа.

Я видел, что мы можем вызвать эту функцию, но где я могу это вызвать?

func write(string: String) {
        CLSLogv("%@", getVaList([string]))
    }

мы не сможем найти строку кода из этого сбоя

Как печатать пользовательские журналы в ткани? Какая функция по умолчанию вызывается при сбое?


person Harikarthick K    schedule 20.12.2018    source источник


Ответы (2)


Вы можете создать класс CrashLogger с функцией logEvent, которая принимает eventName как String и словарь данных формата [String: CustomStringConvertible] для передачи любой соответствующей информации в Crashlytics.

import Crashlytics

final class CrashLogger {

    static let shared = CrashLogger()

    private init() { }

    func logEvent(_ event: String, withData data: [String: CustomStringConvertible]) {
        let dataString = data.reduce("Event: \(event): ", { (result, element: (key: String, value: CustomStringConvertible)) -> String in
            return result + " (" + element.key + ": " + String(describing: element.value) + " )"
        })
        logEvent(dataString)
    }

    private func logEvent(_ message: String) {
        CLSLogv("%@", getVaList([message]))
    }
}

Теперь вы можете вызывать этот метод logEvent всякий раз, когда хотите зарегистрировать пользовательское событие в Crashlytics, и он будет доступен в разделе журналов при просмотре любого сбоя в Firebase.

Как использовать: например, функция addToCart в приложении электронной коммерции:

func addToCard(_ product: Product) {
    CrashLogger.logEvent("addToCart", withData: ["productId": product.id, "productName": product.name)
    //do further processing like update cart item count etc.
}

Дополнительную информацию см. в документах пользовательских журналов Crashlytics.

person Suhit Patil    schedule 20.12.2018

Вы можете регистрировать пользовательские действия с помощью кода .recordError(NSERROR) ниже. Тем не менее, я не рекомендую вам использовать Crashlytics для таких журналов «Нажатие кнопки». Используйте некоторые инструменты аналитики, такие как (Google Analytics).

let customError = NSError(domain: errorDomain, code: errorCode, userInfo: [
            NSLocalizedDescriptionKey: message,
            ])
            Crashlytics.sharedInstance().recordError(customError)
person Emre Önder    schedule 20.12.2018
comment
Но где я могу это назвать? - person Harikarthick K; 20.12.2018
comment
В вашей функции крана кнопки. - person Emre Önder; 20.12.2018
comment
Да. Но я должен использовать общую функцию для сбоя. В моем приложении более 50 кнопок. - person Harikarthick K; 20.12.2018