Advertisement
Guest User

Untitled

a guest
May 29th, 2017
507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.33 KB | None | 0 0
  1. // ----------------------------------------------------------------------------
  2. //
  3. //  FirebaseLogAnalytics.swift
  4. //
  5. //  @author     Nikita Semakov <SemakovNV@ekassir.com>
  6. //  @copyright  Copyright (c) 2017, eKassir Ltd. All rights reserved.
  7. //  @link       http://www.ekassir.com/
  8. //
  9. // ----------------------------------------------------------------------------
  10.  
  11. import FirebaseAnalytics
  12.  
  13. // ----------------------------------------------------------------------------
  14.  
  15. public final class FirebaseLogAnalytics: AnalyticsContract
  16. {
  17. // MARK: - Construction
  18.  
  19.     public static let shared = FirebaseLogAnalytics()
  20.  
  21.     private init() {
  22.         // Do nothing
  23.     }
  24.  
  25. // MARK: - Methods
  26.  
  27.     public func log(event: AnalyticsEvent, screen: Analytics.ScreenName?)
  28.     {
  29.         if Analytics.isLoggable()
  30.         {
  31.             FIRAnalytics.setScreenName(screen?.rawValue, screenClass: nil)
  32.             FIRAnalytics.setUserID(self.trackingId)
  33.            
  34.             var parameters: [String : NSObject] = [FirebaseKeys.Category.rawValue : event.category]
  35.  
  36.             if let label = event.label {
  37.                 parameters[FirebaseKeys.Label.rawValue] = label
  38.             }
  39.  
  40.             if let value = event.value {
  41.                 parameters[FirebaseKeys.Value.rawValue] = value
  42.             }
  43.  
  44.             FIRAnalytics.logEventWithName(event.action, parameters: parameters)
  45.         }
  46.     }
  47.  
  48.     public func logScreenOpen(screen: Analytics.ScreenName)
  49.     {
  50.         if Analytics.isLoggable()
  51.         {
  52.             FIRAnalytics.setScreenName(screen.rawValue, screenClass: nil)
  53.             FIRAnalytics.logEventWithName(Inner.OpenScreenAction, parameters: nil)
  54.         }
  55.     }
  56.  
  57.     func setTrackingId(trackingId: String?) {
  58.         self.trackingId = trackingId
  59.     }
  60.  
  61. // MARK: - Private Functions
  62.  
  63.     // ...
  64.  
  65. // MARK: - Inner Types
  66.  
  67.     enum FirebaseKeys: String
  68.     {
  69.         case Label  = "label"
  70. //        case Action = "action" // use "name" parameter in function instead
  71.         case Category  = "category"
  72.         case Value  = "value"
  73.     }
  74.  
  75. // MARK: - Constants
  76.  
  77.     private struct Inner {
  78.         static let OpenScreenAction = "open_screen_action"
  79.     }
  80.  
  81. // MARK: - Variables
  82.  
  83.     private var trackingId: String?
  84.  
  85. }
  86.  
  87. // ----------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement