BaseTracking is the easiest way to setup your analytics in Swift.
- iOS 9.3+
- Swift 5.0+
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
BaseTracking is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod'BaseTracking'and run pod install
Firebase Analytics
Example using a HomeViewController:
import UIKit
classHomeViewController:UIViewController{
// MARK: - View LifeCycle
overridefunc viewDidLoad(){
super.viewDidLoad()}overridefunc viewWillAppear(_ animated:Bool){
super.viewWillAppear(animated)HomeTracking.trackView(name:.home)}
// MARK: - Actions
@IBActionprivatefunc openMenu(_ sender:Any?){
// Example using static values
HomeTracking.trackEvent(name:.openMenu)}@IBActionprivatefunc showDetails(_ sender:Any?){
// Example using dynamic values
letbuttonName=(sender as?UIBarButtonItem)?.title ??""letparameters=HomeTracking.getSelectButtonParameter(buttonName)HomeTracking.trackEvent(name:.showDetails, parameters: parameters)}}Example for HomeTracking file:
import BaseTracking
structHomeTracking:BaseTrackingEventLog{enumScreenName:String{case home
}enumEventName:String{case openMenu ="home_open_menu"case showDetails ="home_open_details"}typealiasClassName=CustomRawRepresentabletypealiasEventParameters=CustomRawRepresentable}extensionHomeTracking{
/// Prepare the parameters using dynamic values
/// - Parameter value: Dynamic value
/// - Returns: Event Parameters
staticfunc getSelectButtonParameter(_ value:Any)->EventParameters?{letitem:[String:Any]=["button_name": value]returnEventParameters(rawValue: item)}}TrackingManager file configuration :
import Firebase
import BaseTracking
finalclassTrackingManager:BaseTrackingProtocol{staticletshared=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)}privatefunc logEvent(_ name:String, parameters:[String:Any]?=nil){print("๐ Analytics - \(name)\n\(parameters ??[:])")}}
// MARK: - BaseTrackingEventLog
extensionBaseTrackingEventLog{staticfunc trackView(name:ScreenName, className:ClassName?=nil){letdata=BaseTrackingViewData(
name: name.rawValue as?String??"",
className: className?.rawValue as?String)TrackingManager.shared.track(view: data)}staticfunc trackEvent(name:EventName, parameters:EventParameters?=nil){letdata=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.
- 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
BaseTracking is under MIT license. See the LICENSE file for more info.
