Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ target 'Simcoe' do

end

target 'mParticleExample' do
project 'mParticleExample/mParticleExample'
target 'SimcoeExample' do
project 'SimcoeExample/SimcoeExample'
pod 'Simcoe', :path => './', :subspecs => ['Adobe', 'mParticle', 'Mixpanel']
podspec :path => 'Simcoe.podspec'

Expand Down
24 changes: 12 additions & 12 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
PODS:
- AdobeMobileSDK (4.13.0):
- AdobeMobileSDK/iOS (= 4.13.0)
- AdobeMobileSDK/iOS (4.13.0)
- Mixpanel-swift (2.1.3)
- mParticle-Apple-SDK (6.11.1):
- mParticle-Apple-SDK/mParticle (= 6.11.1)
- mParticle-Apple-SDK/mParticle (6.11.1)
- AdobeMobileSDK (4.13.4):
- AdobeMobileSDK/iOS (= 4.13.4)
- AdobeMobileSDK/iOS (4.13.4)
- Mixpanel-swift (2.1.5)
- mParticle-Apple-SDK (6.12.6):
- mParticle-Apple-SDK/mParticle (= 6.12.6)
- mParticle-Apple-SDK/mParticle (6.12.6)
- Simcoe/Adobe (1.0.0):
- AdobeMobileSDK (~> 4.13)
- Simcoe/Core
Expand All @@ -30,11 +30,11 @@ EXTERNAL SOURCES:
:path: "./"

SPEC CHECKSUMS:
AdobeMobileSDK: 52c3fbf43b5b054132393b1486ecbefca0ba01db
Mixpanel-swift: a50fe20def8fc2ea0f2c912772ad835bd8524dae
mParticle-Apple-SDK: 8c7dfc195459870aa33be634f006342cb37d6a24
AdobeMobileSDK: c236ba5d17529a002209f9899d38084d80bec337
Mixpanel-swift: bcf863981f72c3bb2a51549292da61f13043d944
mParticle-Apple-SDK: 78259500f1e06bf8ed7c95a8dccbb7f346dc797f
Simcoe: 3e77a2ef7f0a28b3184cd823cae9682613760d75

PODFILE CHECKSUM: 3168a08aa3eb292250204b2bc967159b719878a0
PODFILE CHECKSUM: 45363b8ea226d7146b974db421e971b71efa32b9

COCOAPODS: 1.1.1
COCOAPODS: 1.2.0
2 changes: 1 addition & 1 deletion Simcoe.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

656 changes: 656 additions & 0 deletions SimcoeExample/SimcoeExample.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
//
// SimcoeAnalyticsEngine.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/22/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import Foundation
import Simcoe
import CoreLocation

internal class SimcoeAnalyticsEngine: AnalyticsEngine {

func run(with providers: [AnalyticsTracking]) {
Simcoe.run(with: providers)
}

func track(event: String, withAdditionalProperties properties: Properties?) {
Simcoe.track(event: event, withAdditionalProperties: properties)
}

func trackLifetimeIncrease(byAmount amount: Double,
forItem item: String?,
withAdditionalProperties properties: Properties?) {

Simcoe.trackLifetimeIncrease(byAmount: amount, forItem: item, withAdditionalProperties: properties)
}

func track(location: CLLocation, withAdditionalProperties properties: Properties?) {
Simcoe.track(location: location, withAdditionalProperties: properties)
}

func track(pageView: String, withAdditionalProperties properties: Properties?) {
Simcoe.track(pageView: pageView, withAdditionalProperties: properties)
}

func logAddToCart<T : SimcoeProductConvertible>(_ product: T, eventProperties: Properties?) {
Simcoe.logAddToCart(product, eventProperties: eventProperties)
}

func logRemoveFromCart<T: SimcoeProductConvertible>(_ product: T, eventProperties: Properties?) {
Simcoe.logRemoveFromCart(product, eventProperties: eventProperties)
}

func trackCheckoutEvent<T: SimcoeProductConvertible>(_ products: [T], eventProperties: Properties?) {
Simcoe.trackCheckoutEvent(products, eventProperties: eventProperties)
}

func log(error: String, withAdditionalProperties properties: Properties?) {
Simcoe.log(error: error, withAdditionalProperties: properties)
}

func trackPurchaseEvent<T: SimcoeProductConvertible>(_ products: [T], eventProperties: Properties?) {
Simcoe.trackPurchaseEvent(products, eventProperties: eventProperties)
}

func setUserAttribute(_ key: String, value: AnyObject) {
Simcoe.setUserAttribute(key, value: value)
}

func logViewDetail<T: SimcoeProductConvertible>(_ product: T, eventProperties: Properties?) {
Simcoe.logViewDetail(product, eventProperties: eventProperties)
}
}
48 changes: 48 additions & 0 deletions SimcoeExample/SimcoeExample/AnalyticsDisplayViewController.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
//
// AnalyticsDisplayViewController.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/21/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import UIKit

internal final class AnalyticsDisplayViewController: UITableViewController {

var analyticsEngine: AnalyticsEngine!

var providers: AnalyticsProviders!
}

extension AnalyticsDisplayViewController {

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return providers.trackers.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = providers.trackers[indexPath.row].name
cell.accessoryType = .disclosureIndicator
return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)

let trackerVC: TrackerTableViewController = TrackerTableViewController.storyboardInit()

analyticsEngine.run(with: providers.trackers[indexPath.row].providers)

trackerVC.trackers = providers.trackers[indexPath.row].actions
navigationController?.pushViewController(trackerVC, animated: true)
}
}

extension AnalyticsDisplayViewController {

static func storyboardInit<T>() -> T {
return UIStoryboard.mainStoryboard.instantiateViewController(AnalyticsDisplayViewController.storyboardID)
}
}
20 changes: 20 additions & 0 deletions SimcoeExample/SimcoeExample/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// AppDelegate.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/21/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = SimcoeExampleApplication().startWindow()
return true
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"images" : [
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "20x20",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
27 changes: 27 additions & 0 deletions SimcoeExample/SimcoeExample/Base.lproj/LaunchScreen.storyboard
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
32 changes: 32 additions & 0 deletions SimcoeExample/SimcoeExample/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="16B2333a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Simcoe-->
<scene sceneID="8Pt-RH-dzX">
<objects>
<tableViewController storyboardIdentifier="AnalyticsDisplayViewController" id="inV-ru-nsQ" customClass="AnalyticsDisplayViewController" customModule="SimcoeExample" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" id="Csv-xx-mHy">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<connections>
<outlet property="dataSource" destination="inV-ru-nsQ" id="l0t-fk-dxF"/>
<outlet property="delegate" destination="inV-ru-nsQ" id="O3Y-Qh-gsB"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Simcoe" id="eT3-by-FiI"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="efW-mZ-NTn" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="937" y="135"/>
</scene>
</scenes>
</document>
41 changes: 41 additions & 0 deletions SimcoeExample/SimcoeExample/Builders/AnalyticsDisplayBuilder.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//
// AnalyticsDisplayBuilder.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/23/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import Foundation
import Simcoe

internal class AnalyticsDisplayBuilder {

let analyticsEngine: AnalyticsEngine = SimcoeAnalyticsEngine()

lazy var availableTrackers: AvailableTrackers = {
return AvailableTrackers(engine: self.analyticsEngine)
}()

lazy var providers: AnalyticsProviders = {
return AnalyticsProviders(engine: self.analyticsEngine, availableActions: self.availableTrackers.actions)
}()

init() {
let particle = mParticle(key: "mikesaidtomakeafakeone", secret: "hiyoseob")
let adobe = Adobe()

providers.addTracker(name: adobe.name, providers: [adobe])
providers.addTracker(name: particle.name, providers: [particle])
providers.addTracker(name: "All Analytics Trackers", providers: [adobe, particle])
providers.addTracker(name: "None", providers: [])
}

func analyticsDisplayViewController() -> AnalyticsDisplayViewController {
let rootViewController: AnalyticsDisplayViewController = AnalyticsDisplayViewController.storyboardInit()
rootViewController.analyticsEngine = analyticsEngine
rootViewController.providers = providers

return rootViewController
}
}
24 changes: 24 additions & 0 deletions SimcoeExample/SimcoeExample/Extensions/UIStoryboardExtension.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// UIStoryboardExtension.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/23/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import UIKit

extension UIStoryboard {

static var mainStoryboard: UIStoryboard {
return UIStoryboard(name: "Main", bundle: nil)
}

static var trackerStoryboard: UIStoryboard {
return UIStoryboard(name: "Tracker", bundle: nil)
}

func instantiateViewController<T>(_ identifier: String) -> T {
return self.instantiateViewController(withIdentifier: identifier) as! T
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// UIViewControllerExtension.swift
// SimcoeExample
//
// Created by Jonathan Samudio on 2/23/17.
// Copyright © 2017 Prolific Interactive. All rights reserved.
//

import UIKit

extension UIViewController {

static var storyboardID: String {
return String(describing: self)
}
}
Loading