LET SWIFT 3
KORPO.APP-LET-SWIFT
▸ wsparcie dla kilku języków,
▸ każdy język z innym UA,
▸ zmiana języka (wraz z UA) on-the-fly
KORPO.APP-LET-SWIFT-2
▸ wsparcie dla kilku języków,
▸ każdy język z innym UA,
▸ zmiana języka (wraz z UA) on-the-fly
12
LET SWIFT 3
IMPLEMENTACJA - PODS
def letSwiftPods() pod 'Google/Analytics' end target 'let_swift-GA' do letSwiftPods() end target 'let_swift-GA copy' do letSwiftPods() end
▸ 7 kolejnych zależności pobranych,
▸ 27,3 MB samych plików źródłowych po instalacji
13
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - INICJALIZACJA
LSAnalyticsManager.sharedInstance
// Configure tracker from GoogleService-Info.plist. var configureError:NSError? GGLContext.sharedInstance().configureWithError(&configureError) assert(configureError == nil, "Error configuring Google services: \(configureError)") // Optional: configure GAI options. let gai = GAI.sharedInstance() gai.trackUncaughtExceptions = true // report uncaught exceptions gai.logger.logLevel = GAILogLevel.Verbose // remove before app release
15
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - STAŁE
screenTrackNameProperty = GAStrings.ScreenTrackNames.kFirstViewController
Objective-C: #define kGoogleAnalyticsScreenTrackStoreDetails @"store-details"
Swift: struct GAStrings { struct ScreenTrackNames { static let kFirstViewController = "FirstView" static let kSecondViewController = "SecondView" } }
16
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - SCREENTRACK
class FirstViewController: UIViewController { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) let tracker = GAI.sharedInstance().defaultTracker tracker.set(kGAIScreenName, value: „FirstViewControllerName”) let builder = GAIDictionaryBuilder.createScreenView() tracker.send(builder.build() as [NSObject : AnyObject]) } }
17
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - SCREENTRACK
class LSAnalyticsManager { … func trackScreenAppearanceWithName(name :String?){ guard let name = name else { return } let tracker = GAI.sharedInstance().defaultTracker tracker.set(kGAIScreenName, value: name) let builder = GAIDictionaryBuilder.createScreenView() tracker.send(builder.build() as [NSObject : AnyObject]) } }
19
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - SCREENTRACK
class LSViewController: UIViewController{ @IBInspectable var screenTrackNameInspectable: String? var screenTrackNameProperty: String? override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated)
LSAnalyticsManager.sharedInstance. trackScreenAppearanceWithName(screenTrackNameInspectable)
} }
class FirstViewController: LSViewController { override func viewDidLoad() { super.viewDidLoad() screenTrackNameProperty = GAStrings.ScreenTrackNames.kFirstViewController }
20
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - EVENTS
▸ 4 parametry: category (String), event (String), label (String), value (String),
class LSAnalyticsManager { … func trackEvent(withCategoryAndName category: String?, name: String?){ let tracker = GAI.sharedInstance().defaultTracker let builder = GAIDictionaryBuilder.createEventWithCategory(category,
action: name, label: nil, value: nil) tracker.send(builder.build() as [NSObject :AnyObject]) } }
21
LET SWIFT 3
IMPLEMENTACJA - ARCHITEKTURA - EVENTS
class LSAnalyticsManager { … func trackShopEvent(withNameAdvertisementsAndPrice name: String?, adEnabled: Bool,
price: NSNumber?){ let tracker = GAI.sharedInstance().defaultTracker var label : String if adEnabled { label = GAStrings.EventLabels.kAdvertisementsEnabled }else{ label = GAStrings.EventLabels.kAdvertisementsDisabled } let builder =
GAIDictionaryBuilder.createEventWithCategory(GAStrings.EventCategories.kBuyNowFlow, action: name,
label: label, value: price) tracker.send(builder.build() as [NSObject :AnyObject]) } }
22
LET SWIFT 3
IMPLEMENTACJA - ZMIANA UA
class LSCountryObject: NSObject{ var countryName: String? var countryCode: String? var countryImageName: String? var countryUA: String? }
let country = LSCountryObject() country.countryName = "LetSwift" country.countryCode = "LS" country.countryUA = "UA-66017211-7" LSAnalyticsManager.sharedInstance.endGASession() LSAnalyticsManager.sharedInstance.startSession(WithCountry: country)
23
LET SWIFT 3
IMPLEMENTACJA - ZMIANA UA
class LSAnalyticsManager{ … func endGASession(){ let tracker = GAI.sharedInstance().defaultTracker let builder = GAIDictionaryBuilder.createScreenView() builder.set("end", forKey: kGAISessionControl) tracker.send(builder.build() as [NSObject :AnyObject]) }
func startSession(withCountry country: LSCountryObject?){ guard let country = country else { return } let tracker = GAI.sharedInstance().trackerWithTrackingId(country.countryUA) GAI.sharedInstance().defaultTracker = tracker; let builder =
GAIDictionaryBuilder.createEventWithCategory(GAStrings.EventNames.kCountryChanged, action: nil, label: nil, value: nil)
builder.set("start", forKey: kGAISessionControl) tracker.send(builder.build() as [NSObject: AnyObject]) }
}
24
TEKST
IMPLEMENTACJA - CONFIGURATION FILE
LET SWIFT 3
├── FirstViewController.swift ├── Info.plist ├── Resources │ ├── let-swift-GA │ │ └── GoogleService-Info.plist │ └── let-swift-GA-copy │ └── GoogleService-Info.plist
▸ wygenerowanie dwóch plików konfiguracyjnych
▸ umieszczenie ich w osobnych folderach
25
Top Related