Skip to content

thejohnlima/BaseTracking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e3e4340 ยท Aug 8, 2023

History

53 Commits
Feb 22, 2020
Aug 24, 2019
Jul 8, 2021
Jul 8, 2021
Aug 24, 2019
Aug 25, 2019
Aug 25, 2019
Feb 22, 2020
Jul 8, 2021
Aug 25, 2019
Mar 12, 2019
Aug 24, 2019
Aug 8, 2023

Repository files navigation

BaseTracking


BaseTracking is the easiest way to setup your analytics in Swift.

โ—๏ธRequirements

  • iOS 9.3+
  • Swift 5.0+

โš’ Installation

Swift Package Manager

BaseTracking is available through SPM. To install it, follow the steps:

Open Xcode project > File > Swift Packages > Add Package Dependecy

After that, put the url in the field: https://github.com/thejohnlima/BaseTracking.git

CocoaPods

BaseTracking is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'BaseTracking'

and run pod install

๐ŸŽ“ How to use

Firebase Analytics

Example using a HomeViewController:

import UIKit

class HomeViewController: UIViewController {

  // MARK: - View LifeCycle
  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    HomeTracking.trackView(name: .home)
  }

  // MARK: - Actions
  @IBAction private func openMenu(_ sender: Any?) {
    // Example using static values
    HomeTracking.trackEvent(name: .openMenu)
  }

  @IBAction private func showDetails(_ sender: Any?) {
    // Example using dynamic values
    let buttonName = (sender as? UIBarButtonItem)?.title ?? ""
    let parameters = HomeTracking.getSelectButtonParameter(buttonName)
    HomeTracking.trackEvent(name: .showDetails, parameters: parameters)
  }
}

Example for HomeTracking file:

import BaseTracking

struct HomeTracking: BaseTrackingEventLog {
  enum ScreenName: String {
    case home
  }

  enum EventName: String {
    case openMenu = "home_open_menu"
    case showDetails = "home_open_details"
  }

  typealias ClassName = CustomRawRepresentable
  typealias EventParameters = CustomRawRepresentable
}

extension HomeTracking {

  /// Prepare the parameters using dynamic values
  /// - Parameter value: Dynamic value
  /// - Returns: Event Parameters
  static func getSelectButtonParameter(_ value: Any) -> EventParameters? {
    let item: [String: Any] = ["button_name": value]
    return EventParameters(rawValue: item)
  }
}

TrackingManager file configuration :

import Firebase
import BaseTracking

final class TrackingManager: BaseTrackingProtocol {
  static let shared = TrackingManager()

  func configure() {
    FirebaseApp.configure()
    FirebaseConfiguration.shared.setLoggerLevel(.warning)
  }

  func track(event log: BaseTrackingEventLogData) {
    logEvent(log.name, parameters: log.parameters)
    Analytics.logEvent(log.name, parameters: log.parameters)
  }

  func track(view data: BaseTrackingViewData) {
    logEvent(data.name)
    Analytics.setScreenName(data.name, screenClass: data.className)
  }

  private func logEvent(_ name: String, parameters: [String : Any]? = nil) {
    print("๐Ÿ“Š Analytics - \(name)\n\(parameters ?? [:])")
  }
}

// MARK: - BaseTrackingEventLog
extension BaseTrackingEventLog {
  static func trackView(name: ScreenName, className: ClassName? = nil) {
    let data = BaseTrackingViewData(
      name: name.rawValue as? String ?? "",
      className: className?.rawValue as? String
    )
    TrackingManager.shared.track(view: data)
  }

  static func trackEvent(name: EventName, parameters: EventParameters? = nil) {
    let data = BaseTrackingEventLogData(
      name: name.rawValue as? String ?? "",
      parameters: parameters?.rawValue as? [String: Any]
    )
    TrackingManager.shared.track(event: data)
  }
}

If you need examples unsing Google Analytics or Segment Analytics, feel free to take a look at demo projects.

๐Ÿ™‹๐Ÿปโ€ Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request. ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

Trello Board

๐Ÿ“œ License

BaseTracking is under MIT license. See the LICENSE file for more info.

โ˜•๏ธ Support

Buy Me A Coffee