Отслеживание всех событий ViewController и UIControls для Custom Analytics Framework iOS - PullRequest
1 голос
/ 09 февраля 2020

Я работаю над аналитическим SDK, который будет отслеживать все пользовательские события, представление которых появилось или исчезло, какая кнопка нажата, какой переключатель UIS включен или выключен, прокручивается UITableView или выполняется переключение по ячейке и т. Д. c.

Я использую метод Swizzling для реализации этой функции, но я видел некоторые недостатки, связанные с этим

  1. Если переворот происходит несколько раз, либо ваш код не будет работать или Firebase (или любой другой фреймворк, использующий тот же метод) не будет работать.

  2. Когда выпускаются более новые версии iOS, есть вероятность, что Swizzling выходит из строя. Возможно, вам придется перепроверять это каждый раз.

Я прочитал недостаток этой статьи

https://medium.com/@abhimuralidharan / method-swizzling-in- ios -swift-1f38edaf984f

Вот мой пример кода для отслеживания 1. Отслеживание ViewDidAppeard

@objc func viewDidDisappearOverride(_ animated: Bool) {

}

static func swizzleViewDidDisappear() {
    if self != UIViewController.self {
        return
    }
    let _: () = {
        let originalSelector = #selector(UIViewController.viewDidDisappear(_:))
        let swizzledSelector = #selector(UIViewController.viewDidDisappearOverride(_:))
        guard let originalMethod = class_getInstanceMethod(self, originalSelector),
            let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) else { return }
        method_exchangeImplementations(originalMethod, swizzledMethod)
    }()

2 , Кнопка отслеживания клика с расширением UIButton

override open func awakeFromNib() {
    super.awakeFromNib()
    self.addTarget(self, action: #selector(globalUIButonAction), for: .touchUpInside)
}

@objc func globalUIButonAction (_ sender: UIButton) { }

Как отследить все события, что является лучшим способом или решением, чтобы сделать это?

...