diff --git a/Podfile b/Podfile index f02d3c8..716f7e5 100644 --- a/Podfile +++ b/Podfile @@ -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' diff --git a/Podfile.lock b/Podfile.lock index 2a7a7ee..f2ec764 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -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 @@ -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 diff --git a/Simcoe.xcworkspace/contents.xcworkspacedata b/Simcoe.xcworkspace/contents.xcworkspacedata index f75aa4f..bff6263 100644 --- a/Simcoe.xcworkspace/contents.xcworkspacedata +++ b/Simcoe.xcworkspace/contents.xcworkspacedata @@ -5,7 +5,7 @@ location = "group:Simcoe.xcodeproj"> + location = "group:SimcoeExample/SimcoeExample.xcodeproj"> diff --git a/SimcoeExample/SimcoeExample.xcodeproj/project.pbxproj b/SimcoeExample/SimcoeExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..b42118b --- /dev/null +++ b/SimcoeExample/SimcoeExample.xcodeproj/project.pbxproj @@ -0,0 +1,656 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 200562E11E5DE5A60015AD55 /* TrackerAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562E01E5DE5A60015AD55 /* TrackerAction.swift */; }; + 200562E31E5DE5BA0015AD55 /* EventTrackerAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562E21E5DE5BA0015AD55 /* EventTrackerAction.swift */; }; + 200562E51E5DE5CC0015AD55 /* LifetimeValueIncreasingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562E41E5DE5CC0015AD55 /* LifetimeValueIncreasingAction.swift */; }; + 200562E71E5DE5DD0015AD55 /* LocationTrackingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562E61E5DE5DD0015AD55 /* LocationTrackingAction.swift */; }; + 200562E91E5DE5EB0015AD55 /* PageViewTrackingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562E81E5DE5EB0015AD55 /* PageViewTrackingAction.swift */; }; + 200562EC1E5DEA530015AD55 /* SimcoeAnalyticsEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562EB1E5DEA530015AD55 /* SimcoeAnalyticsEngine.swift */; }; + 200562EE1E5DEA780015AD55 /* AnalyticsEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562ED1E5DEA780015AD55 /* AnalyticsEngine.swift */; }; + 200562F11E5DEAB20015AD55 /* AnalyticsTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562F01E5DEAB20015AD55 /* AnalyticsTracker.swift */; }; + 200562F31E5F43B10015AD55 /* AddToCartLoggingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562F21E5F43B10015AD55 /* AddToCartLoggingAction.swift */; }; + 200562F51E5F45460015AD55 /* RemoveFromCartAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562F41E5F45460015AD55 /* RemoveFromCartAction.swift */; }; + 200562F71E5F56030015AD55 /* CheckoutTrackingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562F61E5F56030015AD55 /* CheckoutTrackingAction.swift */; }; + 200562F91E5F56D50015AD55 /* ErrorLoggingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562F81E5F56D50015AD55 /* ErrorLoggingAction.swift */; }; + 200562FB1E5F577D0015AD55 /* PurchaseTrackingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562FA1E5F577D0015AD55 /* PurchaseTrackingAction.swift */; }; + 200562FD1E5F57EC0015AD55 /* UserAttributeTrackingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562FC1E5F57EC0015AD55 /* UserAttributeTrackingAction.swift */; }; + 200562FF1E5F584B0015AD55 /* ViewDetailLoggingAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200562FE1E5F584B0015AD55 /* ViewDetailLoggingAction.swift */; }; + 200563011E5F597B0015AD55 /* SampleProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563001E5F597B0015AD55 /* SampleProduct.swift */; }; + 200563031E5F5F4A0015AD55 /* TrackerActionGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563021E5F5F4A0015AD55 /* TrackerActionGenerator.swift */; }; + 200563051E5F5F5F0015AD55 /* ActionGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563041E5F5F5F0015AD55 /* ActionGenerator.swift */; }; + 200563071E5F87030015AD55 /* AvailableTrackers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563061E5F87030015AD55 /* AvailableTrackers.swift */; }; + 200563091E5F87230015AD55 /* AnalyticsProviders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563081E5F87230015AD55 /* AnalyticsProviders.swift */; }; + 200563121E5F9D630015AD55 /* AnalyticsDisplayBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563111E5F9D630015AD55 /* AnalyticsDisplayBuilder.swift */; }; + 200563141E5F9E770015AD55 /* SimcoeExampleApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563131E5F9E770015AD55 /* SimcoeExampleApplication.swift */; }; + 200563181E5FA1BF0015AD55 /* UIStoryboardExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563161E5FA1BF0015AD55 /* UIStoryboardExtension.swift */; }; + 200563191E5FA1BF0015AD55 /* UIViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200563171E5FA1BF0015AD55 /* UIViewControllerExtension.swift */; }; + 20C3B1B11E5CE6F70095F185 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20C3B1B01E5CE6F70095F185 /* AppDelegate.swift */; }; + 20C3B1B61E5CE6F70095F185 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 20C3B1B41E5CE6F70095F185 /* Main.storyboard */; }; + 20C3B1B81E5CE6F70095F185 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 20C3B1B71E5CE6F70095F185 /* Assets.xcassets */; }; + 20C3B1BB1E5CE6F70095F185 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 20C3B1B91E5CE6F70095F185 /* LaunchScreen.storyboard */; }; + 20C3B1C61E5CE6F80095F185 /* SimcoeExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20C3B1C51E5CE6F80095F185 /* SimcoeExampleTests.swift */; }; + 20C3B1D11E5CE7D70095F185 /* AnalyticsDisplayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20C3B1D01E5CE7D70095F185 /* AnalyticsDisplayViewController.swift */; }; + 20C3B1D31E5CED6C0095F185 /* TrackerTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20C3B1D21E5CED6C0095F185 /* TrackerTableViewController.swift */; }; + 20C3B1D51E5CEEB00095F185 /* Tracker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 20C3B1D41E5CEEB00095F185 /* Tracker.storyboard */; }; + 7C053332C270E8F7722BCEC4 /* Pods_SimcoeExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CD57B97C112AB0B5961BA41 /* Pods_SimcoeExample.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 20C3B1C21E5CE6F80095F185 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 20C3B1A51E5CE6F70095F185 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 20C3B1AC1E5CE6F70095F185; + remoteInfo = SimcoeExample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 200562E01E5DE5A60015AD55 /* TrackerAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrackerAction.swift; sourceTree = ""; }; + 200562E21E5DE5BA0015AD55 /* EventTrackerAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventTrackerAction.swift; sourceTree = ""; }; + 200562E41E5DE5CC0015AD55 /* LifetimeValueIncreasingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LifetimeValueIncreasingAction.swift; sourceTree = ""; }; + 200562E61E5DE5DD0015AD55 /* LocationTrackingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationTrackingAction.swift; sourceTree = ""; }; + 200562E81E5DE5EB0015AD55 /* PageViewTrackingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PageViewTrackingAction.swift; sourceTree = ""; }; + 200562EB1E5DEA530015AD55 /* SimcoeAnalyticsEngine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimcoeAnalyticsEngine.swift; sourceTree = ""; }; + 200562ED1E5DEA780015AD55 /* AnalyticsEngine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsEngine.swift; sourceTree = ""; }; + 200562F01E5DEAB20015AD55 /* AnalyticsTracker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsTracker.swift; sourceTree = ""; }; + 200562F21E5F43B10015AD55 /* AddToCartLoggingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddToCartLoggingAction.swift; sourceTree = ""; }; + 200562F41E5F45460015AD55 /* RemoveFromCartAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoveFromCartAction.swift; sourceTree = ""; }; + 200562F61E5F56030015AD55 /* CheckoutTrackingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckoutTrackingAction.swift; sourceTree = ""; }; + 200562F81E5F56D50015AD55 /* ErrorLoggingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorLoggingAction.swift; sourceTree = ""; }; + 200562FA1E5F577D0015AD55 /* PurchaseTrackingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseTrackingAction.swift; sourceTree = ""; }; + 200562FC1E5F57EC0015AD55 /* UserAttributeTrackingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAttributeTrackingAction.swift; sourceTree = ""; }; + 200562FE1E5F584B0015AD55 /* ViewDetailLoggingAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDetailLoggingAction.swift; sourceTree = ""; }; + 200563001E5F597B0015AD55 /* SampleProduct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SampleProduct.swift; sourceTree = ""; }; + 200563021E5F5F4A0015AD55 /* TrackerActionGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrackerActionGenerator.swift; sourceTree = ""; }; + 200563041E5F5F5F0015AD55 /* ActionGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionGenerator.swift; sourceTree = ""; }; + 200563061E5F87030015AD55 /* AvailableTrackers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AvailableTrackers.swift; sourceTree = ""; }; + 200563081E5F87230015AD55 /* AnalyticsProviders.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsProviders.swift; sourceTree = ""; }; + 200563111E5F9D630015AD55 /* AnalyticsDisplayBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsDisplayBuilder.swift; sourceTree = ""; }; + 200563131E5F9E770015AD55 /* SimcoeExampleApplication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimcoeExampleApplication.swift; sourceTree = ""; }; + 200563161E5FA1BF0015AD55 /* UIStoryboardExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIStoryboardExtension.swift; sourceTree = ""; }; + 200563171E5FA1BF0015AD55 /* UIViewControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtension.swift; sourceTree = ""; }; + 20C3B1AD1E5CE6F70095F185 /* SimcoeExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimcoeExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 20C3B1B01E5CE6F70095F185 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 20C3B1B51E5CE6F70095F185 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 20C3B1B71E5CE6F70095F185 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 20C3B1BA1E5CE6F70095F185 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 20C3B1BC1E5CE6F70095F185 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 20C3B1C11E5CE6F80095F185 /* SimcoeExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimcoeExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 20C3B1C51E5CE6F80095F185 /* SimcoeExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimcoeExampleTests.swift; sourceTree = ""; }; + 20C3B1C71E5CE6F80095F185 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 20C3B1D01E5CE7D70095F185 /* AnalyticsDisplayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsDisplayViewController.swift; sourceTree = ""; }; + 20C3B1D21E5CED6C0095F185 /* TrackerTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrackerTableViewController.swift; sourceTree = ""; }; + 20C3B1D41E5CEEB00095F185 /* Tracker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Tracker.storyboard; sourceTree = ""; }; + 2CD57B97C112AB0B5961BA41 /* Pods_SimcoeExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SimcoeExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E83548EECC7ED7DF5F36D714 /* Pods-SimcoeExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimcoeExample.release.xcconfig"; path = "../Pods/Target Support Files/Pods-SimcoeExample/Pods-SimcoeExample.release.xcconfig"; sourceTree = ""; }; + E91AED01048FDD61337E822D /* Pods-SimcoeExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SimcoeExample.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-SimcoeExample/Pods-SimcoeExample.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 20C3B1AA1E5CE6F70095F185 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7C053332C270E8F7722BCEC4 /* Pods_SimcoeExample.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 20C3B1BE1E5CE6F80095F185 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 200562DE1E5DE59A0015AD55 /* TrackerActions */ = { + isa = PBXGroup; + children = ( + 200562E21E5DE5BA0015AD55 /* EventTrackerAction.swift */, + 200562E41E5DE5CC0015AD55 /* LifetimeValueIncreasingAction.swift */, + 200562E61E5DE5DD0015AD55 /* LocationTrackingAction.swift */, + 200562E81E5DE5EB0015AD55 /* PageViewTrackingAction.swift */, + 200562F21E5F43B10015AD55 /* AddToCartLoggingAction.swift */, + 200562F41E5F45460015AD55 /* RemoveFromCartAction.swift */, + 200562F61E5F56030015AD55 /* CheckoutTrackingAction.swift */, + 200562F81E5F56D50015AD55 /* ErrorLoggingAction.swift */, + 200562FA1E5F577D0015AD55 /* PurchaseTrackingAction.swift */, + 200562FC1E5F57EC0015AD55 /* UserAttributeTrackingAction.swift */, + 200562FE1E5F584B0015AD55 /* ViewDetailLoggingAction.swift */, + ); + path = TrackerActions; + sourceTree = ""; + }; + 200562DF1E5DE59A0015AD55 /* Protocols */ = { + isa = PBXGroup; + children = ( + 200562E01E5DE5A60015AD55 /* TrackerAction.swift */, + 200562ED1E5DEA780015AD55 /* AnalyticsEngine.swift */, + 200563041E5F5F5F0015AD55 /* ActionGenerator.swift */, + ); + path = Protocols; + sourceTree = ""; + }; + 200562EA1E5DEA4D0015AD55 /* Analytics Engine */ = { + isa = PBXGroup; + children = ( + 200562EB1E5DEA530015AD55 /* SimcoeAnalyticsEngine.swift */, + ); + path = "Analytics Engine"; + sourceTree = ""; + }; + 200562EF1E5DEAAB0015AD55 /* Helper Classes */ = { + isa = PBXGroup; + children = ( + 200562F01E5DEAB20015AD55 /* AnalyticsTracker.swift */, + 200563001E5F597B0015AD55 /* SampleProduct.swift */, + 200563021E5F5F4A0015AD55 /* TrackerActionGenerator.swift */, + 200563061E5F87030015AD55 /* AvailableTrackers.swift */, + 200563081E5F87230015AD55 /* AnalyticsProviders.swift */, + ); + path = "Helper Classes"; + sourceTree = ""; + }; + 200563101E5F9D550015AD55 /* Builders */ = { + isa = PBXGroup; + children = ( + 200563111E5F9D630015AD55 /* AnalyticsDisplayBuilder.swift */, + ); + path = Builders; + sourceTree = ""; + }; + 200563151E5FA1BF0015AD55 /* Extensions */ = { + isa = PBXGroup; + children = ( + 200563161E5FA1BF0015AD55 /* UIStoryboardExtension.swift */, + 200563171E5FA1BF0015AD55 /* UIViewControllerExtension.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 20C3B1A41E5CE6F70095F185 = { + isa = PBXGroup; + children = ( + 20C3B1AF1E5CE6F70095F185 /* SimcoeExample */, + 20C3B1C41E5CE6F80095F185 /* SimcoeExampleTests */, + 20C3B1AE1E5CE6F70095F185 /* Products */, + C7C320D69EA0D1C563FF3995 /* Pods */, + F9408D272EA2E6886CDC6D26 /* Frameworks */, + ); + sourceTree = ""; + }; + 20C3B1AE1E5CE6F70095F185 /* Products */ = { + isa = PBXGroup; + children = ( + 20C3B1AD1E5CE6F70095F185 /* SimcoeExample.app */, + 20C3B1C11E5CE6F80095F185 /* SimcoeExampleTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 20C3B1AF1E5CE6F70095F185 /* SimcoeExample */ = { + isa = PBXGroup; + children = ( + 20C3B1B01E5CE6F70095F185 /* AppDelegate.swift */, + 200563131E5F9E770015AD55 /* SimcoeExampleApplication.swift */, + 20C3B1D01E5CE7D70095F185 /* AnalyticsDisplayViewController.swift */, + 20C3B1D21E5CED6C0095F185 /* TrackerTableViewController.swift */, + 20C3B1B41E5CE6F70095F185 /* Main.storyboard */, + 20C3B1D41E5CEEB00095F185 /* Tracker.storyboard */, + 20C3B1B71E5CE6F70095F185 /* Assets.xcassets */, + 20C3B1B91E5CE6F70095F185 /* LaunchScreen.storyboard */, + 20C3B1BC1E5CE6F70095F185 /* Info.plist */, + 200562EA1E5DEA4D0015AD55 /* Analytics Engine */, + 200562DE1E5DE59A0015AD55 /* TrackerActions */, + 200562DF1E5DE59A0015AD55 /* Protocols */, + 200562EF1E5DEAAB0015AD55 /* Helper Classes */, + 200563101E5F9D550015AD55 /* Builders */, + 200563151E5FA1BF0015AD55 /* Extensions */, + ); + path = SimcoeExample; + sourceTree = ""; + }; + 20C3B1C41E5CE6F80095F185 /* SimcoeExampleTests */ = { + isa = PBXGroup; + children = ( + 20C3B1C51E5CE6F80095F185 /* SimcoeExampleTests.swift */, + 20C3B1C71E5CE6F80095F185 /* Info.plist */, + ); + path = SimcoeExampleTests; + sourceTree = ""; + }; + C7C320D69EA0D1C563FF3995 /* Pods */ = { + isa = PBXGroup; + children = ( + E91AED01048FDD61337E822D /* Pods-SimcoeExample.debug.xcconfig */, + E83548EECC7ED7DF5F36D714 /* Pods-SimcoeExample.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + F9408D272EA2E6886CDC6D26 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2CD57B97C112AB0B5961BA41 /* Pods_SimcoeExample.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 20C3B1AC1E5CE6F70095F185 /* SimcoeExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 20C3B1CA1E5CE6F80095F185 /* Build configuration list for PBXNativeTarget "SimcoeExample" */; + buildPhases = ( + F6BE0E261E5827888F00C654 /* [CP] Check Pods Manifest.lock */, + 20C3B1A91E5CE6F70095F185 /* Sources */, + 20C3B1AA1E5CE6F70095F185 /* Frameworks */, + 20C3B1AB1E5CE6F70095F185 /* Resources */, + 8ACB246C83C58B83E0AEBFF0 /* [CP] Embed Pods Frameworks */, + 46EA684A0296F94B24CD361E /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SimcoeExample; + productName = SimcoeExample; + productReference = 20C3B1AD1E5CE6F70095F185 /* SimcoeExample.app */; + productType = "com.apple.product-type.application"; + }; + 20C3B1C01E5CE6F80095F185 /* SimcoeExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 20C3B1CD1E5CE6F80095F185 /* Build configuration list for PBXNativeTarget "SimcoeExampleTests" */; + buildPhases = ( + 20C3B1BD1E5CE6F80095F185 /* Sources */, + 20C3B1BE1E5CE6F80095F185 /* Frameworks */, + 20C3B1BF1E5CE6F80095F185 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 20C3B1C31E5CE6F80095F185 /* PBXTargetDependency */, + ); + name = SimcoeExampleTests; + productName = SimcoeExampleTests; + productReference = 20C3B1C11E5CE6F80095F185 /* SimcoeExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20C3B1A51E5CE6F70095F185 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0820; + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = "Prolific Interactive"; + TargetAttributes = { + 20C3B1AC1E5CE6F70095F185 = { + CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = 5ZZ7W4SB26; + ProvisioningStyle = Automatic; + }; + 20C3B1C01E5CE6F80095F185 = { + CreatedOnToolsVersion = 8.2.1; + DevelopmentTeam = 5ZZ7W4SB26; + ProvisioningStyle = Automatic; + TestTargetID = 20C3B1AC1E5CE6F70095F185; + }; + }; + }; + buildConfigurationList = 20C3B1A81E5CE6F70095F185 /* Build configuration list for PBXProject "SimcoeExample" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 20C3B1A41E5CE6F70095F185; + productRefGroup = 20C3B1AE1E5CE6F70095F185 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 20C3B1AC1E5CE6F70095F185 /* SimcoeExample */, + 20C3B1C01E5CE6F80095F185 /* SimcoeExampleTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 20C3B1AB1E5CE6F70095F185 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 20C3B1BB1E5CE6F70095F185 /* LaunchScreen.storyboard in Resources */, + 20C3B1D51E5CEEB00095F185 /* Tracker.storyboard in Resources */, + 20C3B1B81E5CE6F70095F185 /* Assets.xcassets in Resources */, + 20C3B1B61E5CE6F70095F185 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 20C3B1BF1E5CE6F80095F185 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 46EA684A0296F94B24CD361E /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-SimcoeExample/Pods-SimcoeExample-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 8ACB246C83C58B83E0AEBFF0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-SimcoeExample/Pods-SimcoeExample-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + F6BE0E261E5827888F00C654 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 20C3B1A91E5CE6F70095F185 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 200562E91E5DE5EB0015AD55 /* PageViewTrackingAction.swift in Sources */, + 200562E11E5DE5A60015AD55 /* TrackerAction.swift in Sources */, + 200563011E5F597B0015AD55 /* SampleProduct.swift in Sources */, + 200562E51E5DE5CC0015AD55 /* LifetimeValueIncreasingAction.swift in Sources */, + 200563031E5F5F4A0015AD55 /* TrackerActionGenerator.swift in Sources */, + 200562FB1E5F577D0015AD55 /* PurchaseTrackingAction.swift in Sources */, + 20C3B1D31E5CED6C0095F185 /* TrackerTableViewController.swift in Sources */, + 200562EE1E5DEA780015AD55 /* AnalyticsEngine.swift in Sources */, + 200563181E5FA1BF0015AD55 /* UIStoryboardExtension.swift in Sources */, + 200562F91E5F56D50015AD55 /* ErrorLoggingAction.swift in Sources */, + 200562EC1E5DEA530015AD55 /* SimcoeAnalyticsEngine.swift in Sources */, + 200563191E5FA1BF0015AD55 /* UIViewControllerExtension.swift in Sources */, + 200562F31E5F43B10015AD55 /* AddToCartLoggingAction.swift in Sources */, + 200562E31E5DE5BA0015AD55 /* EventTrackerAction.swift in Sources */, + 200563071E5F87030015AD55 /* AvailableTrackers.swift in Sources */, + 200563051E5F5F5F0015AD55 /* ActionGenerator.swift in Sources */, + 200562E71E5DE5DD0015AD55 /* LocationTrackingAction.swift in Sources */, + 200562F51E5F45460015AD55 /* RemoveFromCartAction.swift in Sources */, + 200562FD1E5F57EC0015AD55 /* UserAttributeTrackingAction.swift in Sources */, + 200562FF1E5F584B0015AD55 /* ViewDetailLoggingAction.swift in Sources */, + 200563091E5F87230015AD55 /* AnalyticsProviders.swift in Sources */, + 200562F71E5F56030015AD55 /* CheckoutTrackingAction.swift in Sources */, + 200563141E5F9E770015AD55 /* SimcoeExampleApplication.swift in Sources */, + 20C3B1D11E5CE7D70095F185 /* AnalyticsDisplayViewController.swift in Sources */, + 200563121E5F9D630015AD55 /* AnalyticsDisplayBuilder.swift in Sources */, + 200562F11E5DEAB20015AD55 /* AnalyticsTracker.swift in Sources */, + 20C3B1B11E5CE6F70095F185 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 20C3B1BD1E5CE6F80095F185 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 20C3B1C61E5CE6F80095F185 /* SimcoeExampleTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 20C3B1C31E5CE6F80095F185 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 20C3B1AC1E5CE6F70095F185 /* SimcoeExample */; + targetProxy = 20C3B1C21E5CE6F80095F185 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 20C3B1B41E5CE6F70095F185 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 20C3B1B51E5CE6F70095F185 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 20C3B1B91E5CE6F70095F185 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 20C3B1BA1E5CE6F70095F185 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 20C3B1C81E5CE6F80095F185 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 20C3B1C91E5CE6F80095F185 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 10.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 20C3B1CB1E5CE6F80095F185 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E91AED01048FDD61337E822D /* Pods-SimcoeExample.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 5ZZ7W4SB26; + INFOPLIST_FILE = SimcoeExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.SimcoeExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 20C3B1CC1E5CE6F80095F185 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E83548EECC7ED7DF5F36D714 /* Pods-SimcoeExample.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEVELOPMENT_TEAM = 5ZZ7W4SB26; + INFOPLIST_FILE = SimcoeExample/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.SimcoeExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + 20C3B1CE1E5CE6F80095F185 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = 5ZZ7W4SB26; + INFOPLIST_FILE = SimcoeExampleTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.SimcoeExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimcoeExample.app/SimcoeExample"; + }; + name = Debug; + }; + 20C3B1CF1E5CE6F80095F185 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + DEVELOPMENT_TEAM = 5ZZ7W4SB26; + INFOPLIST_FILE = SimcoeExampleTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.SimcoeExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SimcoeExample.app/SimcoeExample"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 20C3B1A81E5CE6F70095F185 /* Build configuration list for PBXProject "SimcoeExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 20C3B1C81E5CE6F80095F185 /* Debug */, + 20C3B1C91E5CE6F80095F185 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 20C3B1CA1E5CE6F80095F185 /* Build configuration list for PBXNativeTarget "SimcoeExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 20C3B1CB1E5CE6F80095F185 /* Debug */, + 20C3B1CC1E5CE6F80095F185 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 20C3B1CD1E5CE6F80095F185 /* Build configuration list for PBXNativeTarget "SimcoeExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 20C3B1CE1E5CE6F80095F185 /* Debug */, + 20C3B1CF1E5CE6F80095F185 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20C3B1A51E5CE6F70095F185 /* Project object */; +} diff --git a/SimcoeExample/SimcoeExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SimcoeExample/SimcoeExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ffd30a0 --- /dev/null +++ b/SimcoeExample/SimcoeExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/SimcoeExample/SimcoeExample/Analytics Engine/SimcoeAnalyticsEngine.swift b/SimcoeExample/SimcoeExample/Analytics Engine/SimcoeAnalyticsEngine.swift new file mode 100644 index 0000000..3faca6a --- /dev/null +++ b/SimcoeExample/SimcoeExample/Analytics Engine/SimcoeAnalyticsEngine.swift @@ -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(_ product: T, eventProperties: Properties?) { + Simcoe.logAddToCart(product, eventProperties: eventProperties) + } + + func logRemoveFromCart(_ product: T, eventProperties: Properties?) { + Simcoe.logRemoveFromCart(product, eventProperties: eventProperties) + } + + func trackCheckoutEvent(_ products: [T], eventProperties: Properties?) { + Simcoe.trackCheckoutEvent(products, eventProperties: eventProperties) + } + + func log(error: String, withAdditionalProperties properties: Properties?) { + Simcoe.log(error: error, withAdditionalProperties: properties) + } + + func trackPurchaseEvent(_ products: [T], eventProperties: Properties?) { + Simcoe.trackPurchaseEvent(products, eventProperties: eventProperties) + } + + func setUserAttribute(_ key: String, value: AnyObject) { + Simcoe.setUserAttribute(key, value: value) + } + + func logViewDetail(_ product: T, eventProperties: Properties?) { + Simcoe.logViewDetail(product, eventProperties: eventProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/AnalyticsDisplayViewController.swift b/SimcoeExample/SimcoeExample/AnalyticsDisplayViewController.swift new file mode 100644 index 0000000..5a61c9d --- /dev/null +++ b/SimcoeExample/SimcoeExample/AnalyticsDisplayViewController.swift @@ -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 { + return UIStoryboard.mainStoryboard.instantiateViewController(AnalyticsDisplayViewController.storyboardID) + } +} diff --git a/SimcoeExample/SimcoeExample/AppDelegate.swift b/SimcoeExample/SimcoeExample/AppDelegate.swift new file mode 100644 index 0000000..ed0eb82 --- /dev/null +++ b/SimcoeExample/SimcoeExample/AppDelegate.swift @@ -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 + } +} diff --git a/SimcoeExample/SimcoeExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/SimcoeExample/SimcoeExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..b8236c6 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -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" + } +} \ No newline at end of file diff --git a/SimcoeExample/SimcoeExample/Base.lproj/LaunchScreen.storyboard b/SimcoeExample/SimcoeExample/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..fdf3f97 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SimcoeExample/SimcoeExample/Base.lproj/Main.storyboard b/SimcoeExample/SimcoeExample/Base.lproj/Main.storyboard new file mode 100644 index 0000000..7639b05 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Base.lproj/Main.storyboard @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SimcoeExample/SimcoeExample/Builders/AnalyticsDisplayBuilder.swift b/SimcoeExample/SimcoeExample/Builders/AnalyticsDisplayBuilder.swift new file mode 100644 index 0000000..32ba8f9 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Builders/AnalyticsDisplayBuilder.swift @@ -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 + } +} diff --git a/SimcoeExample/SimcoeExample/Extensions/UIStoryboardExtension.swift b/SimcoeExample/SimcoeExample/Extensions/UIStoryboardExtension.swift new file mode 100644 index 0000000..7ae9d97 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Extensions/UIStoryboardExtension.swift @@ -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(_ identifier: String) -> T { + return self.instantiateViewController(withIdentifier: identifier) as! T + } +} diff --git a/SimcoeExample/SimcoeExample/Extensions/UIViewControllerExtension.swift b/SimcoeExample/SimcoeExample/Extensions/UIViewControllerExtension.swift new file mode 100644 index 0000000..d02ee05 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Extensions/UIViewControllerExtension.swift @@ -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) + } +} diff --git a/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsProviders.swift b/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsProviders.swift new file mode 100644 index 0000000..be058ca --- /dev/null +++ b/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsProviders.swift @@ -0,0 +1,36 @@ +// +// AnalyticsProviders.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal class AnalyticsProviders { + + var trackers: [AnalyticsTracker] = [] + + private let availableActions: [TrackerAction] + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine, availableActions: [TrackerAction]) { + self.engine = engine + self.availableActions = availableActions + } + + func addTracker(name: String, providers: [AnalyticsTracking]) { + guard !providers.isEmpty else { + self.trackers.append(AnalyticsTracker(providers: providers, actions: availableActions, name: name)) + return + } + + let actionGenerator = TrackerActionGenerator(engine: engine, availableTrackerActions: availableActions) + let actions = actionGenerator.trackerActions(providers: providers) + + self.trackers.append(AnalyticsTracker(providers: providers, actions: actions, name: name)) + } +} diff --git a/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsTracker.swift b/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsTracker.swift new file mode 100644 index 0000000..a47072f --- /dev/null +++ b/SimcoeExample/SimcoeExample/Helper Classes/AnalyticsTracker.swift @@ -0,0 +1,25 @@ +// +// AnalyticsTracker.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal class AnalyticsTracker { + + var providers: [AnalyticsTracking] + + var actions: [TrackerAction] + + var name: String + + init(providers: [AnalyticsTracking], actions: [TrackerAction], name: String) { + self.providers = providers + self.actions = actions + self.name = name + } +} diff --git a/SimcoeExample/SimcoeExample/Helper Classes/AvailableTrackers.swift b/SimcoeExample/SimcoeExample/Helper Classes/AvailableTrackers.swift new file mode 100644 index 0000000..cf7b9cf --- /dev/null +++ b/SimcoeExample/SimcoeExample/Helper Classes/AvailableTrackers.swift @@ -0,0 +1,32 @@ +// +// AvailableTrackers.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation + +internal class AvailableTrackers { + + lazy var actions: [TrackerAction] = { + return [EventTrackerAction(engine: self.engine), + LocationTrackingAction(engine: self.engine), + LifetimeValueIncreasingAction(engine: self.engine), + PageViewTrackingAction(engine: self.engine), + AddToCartLoggingAction(engine: self.engine), + RemoveFromCartAction(engine: self.engine), + CheckoutTrackingAction(engine: self.engine), + ErrorLoggingAction(engine: self.engine), + PurchaseTrackingAction(engine: self.engine), + UserAttributeTrackingAction(engine: self.engine), + ViewDetailLoggingAction(engine: self.engine)] + }() + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } +} diff --git a/SimcoeExample/SimcoeExample/Helper Classes/SampleProduct.swift b/SimcoeExample/SimcoeExample/Helper Classes/SampleProduct.swift new file mode 100644 index 0000000..c455d5f --- /dev/null +++ b/SimcoeExample/SimcoeExample/Helper Classes/SampleProduct.swift @@ -0,0 +1,17 @@ +// +// SampleProduct.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +struct SampleProduct: SimcoeProductConvertible { + + func toSimcoeProduct() -> SimcoeProduct { + return SimcoeProduct(productName: "Fancy Dress", productId: "256489", quantity: 2, price: 100, properties: nil) + } +} diff --git a/SimcoeExample/SimcoeExample/Helper Classes/TrackerActionGenerator.swift b/SimcoeExample/SimcoeExample/Helper Classes/TrackerActionGenerator.swift new file mode 100644 index 0000000..9fecc9f --- /dev/null +++ b/SimcoeExample/SimcoeExample/Helper Classes/TrackerActionGenerator.swift @@ -0,0 +1,38 @@ +// +// TrackerActionGenerator.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class TrackerActionGenerator: ActionGenerator { + + private var engine: AnalyticsEngine + + private var availableTrackerActions: [TrackerAction] + + init(engine: AnalyticsEngine, availableTrackerActions: [TrackerAction]) { + self.engine = engine + self.availableTrackerActions = availableTrackerActions + } + + func trackerActions(providers: [AnalyticsTracking]) -> [TrackerAction] { + var actions: [TrackerAction] = [] + + for provider in providers { + for action in availableTrackerActions { + if action.isActionAvailable(provider: provider) == true && + action.isContainedIn(actions: actions) == false { + + actions.append(action) + } + } + } + + return actions + } +} diff --git a/SimcoeExample/SimcoeExample/Info.plist b/SimcoeExample/SimcoeExample/Info.plist new file mode 100644 index 0000000..38e98af --- /dev/null +++ b/SimcoeExample/SimcoeExample/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SimcoeExample/SimcoeExample/Protocols/ActionGenerator.swift b/SimcoeExample/SimcoeExample/Protocols/ActionGenerator.swift new file mode 100644 index 0000000..06e31bf --- /dev/null +++ b/SimcoeExample/SimcoeExample/Protocols/ActionGenerator.swift @@ -0,0 +1,15 @@ +// +// ActionGenerator.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal protocol ActionGenerator { + + func trackerActions(providers: [AnalyticsTracking]) -> [TrackerAction] +} diff --git a/SimcoeExample/SimcoeExample/Protocols/AnalyticsEngine.swift b/SimcoeExample/SimcoeExample/Protocols/AnalyticsEngine.swift new file mode 100644 index 0000000..1cdf23a --- /dev/null +++ b/SimcoeExample/SimcoeExample/Protocols/AnalyticsEngine.swift @@ -0,0 +1,40 @@ +// +// AnalyticsEngine.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe +import CoreLocation + +internal protocol AnalyticsEngine { + + func run(with providers: [AnalyticsTracking]) + + func track(event: String, withAdditionalProperties properties: Properties?) + + func trackLifetimeIncrease(byAmount amount: Double, + forItem item: String?, + withAdditionalProperties properties: Properties?) + + func track(location: CLLocation, withAdditionalProperties properties: Properties?) + + func track(pageView: String, withAdditionalProperties properties: Properties?) + + func logAddToCart(_ product: T, eventProperties: Properties?) + + func logRemoveFromCart(_ product: T, eventProperties: Properties?) + + func trackCheckoutEvent(_ products: [T], eventProperties: Properties?) + + func log(error: String, withAdditionalProperties properties: Properties?) + + func trackPurchaseEvent(_ products: [T], eventProperties: Properties?) + + func setUserAttribute(_ key: String, value: AnyObject) + + func logViewDetail(_ product: T, eventProperties: Properties?) +} diff --git a/SimcoeExample/SimcoeExample/Protocols/TrackerAction.swift b/SimcoeExample/SimcoeExample/Protocols/TrackerAction.swift new file mode 100644 index 0000000..df58981 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Protocols/TrackerAction.swift @@ -0,0 +1,36 @@ +// +// TrackerAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal protocol TrackerAction { + + var name: String { get } + + var defaultProperties: Properties { get } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool + + func track() + + func isContainedIn(actions: [TrackerAction]) -> Bool +} + +extension TrackerAction { + + var defaultProperties: Properties { + return ["Location" : "Tracker Page"] + } + + func isContainedIn(actions: [TrackerAction]) -> Bool { + return actions.contains(where: { (arrayAction) -> Bool in + return name == arrayAction.name + }) + } +} diff --git a/SimcoeExample/SimcoeExample/SimcoeExampleApplication.swift b/SimcoeExample/SimcoeExample/SimcoeExampleApplication.swift new file mode 100644 index 0000000..3bab547 --- /dev/null +++ b/SimcoeExample/SimcoeExample/SimcoeExampleApplication.swift @@ -0,0 +1,23 @@ +// +// SimcoeExampleApplication.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import UIKit + +internal class SimcoeExampleApplication { + + func startWindow() -> UIWindow { + let window = UIWindow() + + let rootViewController = AnalyticsDisplayBuilder().analyticsDisplayViewController() + let navigationViewController = UINavigationController(rootViewController: rootViewController) + + window.rootViewController = navigationViewController + + return window + } +} diff --git a/SimcoeExample/SimcoeExample/Tracker.storyboard b/SimcoeExample/SimcoeExample/Tracker.storyboard new file mode 100644 index 0000000..1828a24 --- /dev/null +++ b/SimcoeExample/SimcoeExample/Tracker.storyboard @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SimcoeExample/SimcoeExample/TrackerActions/AddToCartLoggingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/AddToCartLoggingAction.swift new file mode 100644 index 0000000..12e2a79 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/AddToCartLoggingAction.swift @@ -0,0 +1,31 @@ +// +// AddToCartLoggingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class AddToCartLoggingAction: TrackerAction { + + var name: String { + return "Track Add to Cart Logging" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is CartLogging + } + + func track() { + engine.logAddToCart(SampleProduct(), eventProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/CheckoutTrackingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/CheckoutTrackingAction.swift new file mode 100644 index 0000000..cb8ee2a --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/CheckoutTrackingAction.swift @@ -0,0 +1,31 @@ +// +// CheckoutTrackingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class CheckoutTrackingAction: TrackerAction { + + var name: String { + return "Track Checkout Event" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is CheckoutTracking + } + + func track() { + engine.trackCheckoutEvent([SampleProduct()], eventProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/ErrorLoggingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/ErrorLoggingAction.swift new file mode 100644 index 0000000..e856a9a --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/ErrorLoggingAction.swift @@ -0,0 +1,31 @@ +// +// ErrorLoggingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class ErrorLoggingAction: TrackerAction { + + var name: String { + return "Track Error Logging" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is ErrorLogging + } + + func track() { + engine.log(error: "Sample Error Message", withAdditionalProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/EventTrackerAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/EventTrackerAction.swift new file mode 100644 index 0000000..21284e8 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/EventTrackerAction.swift @@ -0,0 +1,35 @@ +// +// EventTrackerAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe +import mParticle_Apple_SDK + +internal class EventTrackerAction: TrackerAction { + + var name: String { + return "Track Event" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is EventTracking + } + + func track() { + var eventDataProperties: Properties = MPEvent.eventData(type: .other, name: "") + eventDataProperties["Location"] = "Tracker Page" + + engine.track(event: "Tapped Track Event", withAdditionalProperties: eventDataProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/LifetimeValueIncreasingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/LifetimeValueIncreasingAction.swift new file mode 100644 index 0000000..3f3c069 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/LifetimeValueIncreasingAction.swift @@ -0,0 +1,33 @@ +// +// LifetimeValueIncreasingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal class LifetimeValueIncreasingAction: TrackerAction { + + var name: String { + return "Track Lifetime Value Increase" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is LifetimeValueIncreasing + } + + func track() { + engine.trackLifetimeIncrease(byAmount: 1, + forItem: "Track Lifetime Value Tapped", + withAdditionalProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/LocationTrackingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/LocationTrackingAction.swift new file mode 100644 index 0000000..66c0e2e --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/LocationTrackingAction.swift @@ -0,0 +1,33 @@ +// +// LocationTrackingAction.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 LocationTrackingAction: TrackerAction { + + var name: String { + return "Track Location" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is LocationTracking + } + + func track() { + let location = CLLocation(latitude: 40.7128, longitude: 74.0059) + engine.track(location: location, withAdditionalProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/PageViewTrackingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/PageViewTrackingAction.swift new file mode 100644 index 0000000..6230ad4 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/PageViewTrackingAction.swift @@ -0,0 +1,31 @@ +// +// PageViewTrackingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/22/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal class PageViewTrackingAction: TrackerAction { + + var name: String { + return "Track Page View" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is PageViewTracking + } + + func track() { + engine.track(pageView: "Tracker Selection Page View", withAdditionalProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/PurchaseTrackingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/PurchaseTrackingAction.swift new file mode 100644 index 0000000..53aadf2 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/PurchaseTrackingAction.swift @@ -0,0 +1,32 @@ +// +// PurchaseTrackingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class PurchaseTrackingAction: TrackerAction { + + var name: String { + return "Track Purchase" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is PurchaseTracking + } + + func track() { + engine.trackPurchaseEvent([SampleProduct()], eventProperties: defaultProperties) + } +} + diff --git a/SimcoeExample/SimcoeExample/TrackerActions/RemoveFromCartAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/RemoveFromCartAction.swift new file mode 100644 index 0000000..1deac20 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/RemoveFromCartAction.swift @@ -0,0 +1,31 @@ +// +// RemoveFromCartAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class RemoveFromCartAction: TrackerAction { + + var name: String { + return "Track Remove from Cart Logging" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is CartLogging + } + + func track() { + engine.logRemoveFromCart(SampleProduct(), eventProperties: defaultProperties) + } +} diff --git a/SimcoeExample/SimcoeExample/TrackerActions/UserAttributeTrackingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/UserAttributeTrackingAction.swift new file mode 100644 index 0000000..c97e882 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/UserAttributeTrackingAction.swift @@ -0,0 +1,32 @@ +// +// UserAttributeTrackingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class UserAttributeTrackingAction: TrackerAction { + + var name: String { + return "Track Set User Attribute" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is UserAttributeTracking + } + + func track() { + engine.setUserAttribute("Logged In Type", value: "Email" as AnyObject) + } +} + diff --git a/SimcoeExample/SimcoeExample/TrackerActions/ViewDetailLoggingAction.swift b/SimcoeExample/SimcoeExample/TrackerActions/ViewDetailLoggingAction.swift new file mode 100644 index 0000000..83db2bd --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerActions/ViewDetailLoggingAction.swift @@ -0,0 +1,32 @@ +// +// ViewDetailLoggingAction.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/23/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import Foundation +import Simcoe + +internal final class ViewDetailLoggingAction: TrackerAction { + + var name: String { + return "Track Purchase" + } + + private var engine: AnalyticsEngine + + init(engine: AnalyticsEngine) { + self.engine = engine + } + + func isActionAvailable(provider: AnalyticsTracking) -> Bool { + return provider is ViewDetailLogging + } + + func track() { + engine.logViewDetail(SampleProduct(), eventProperties: defaultProperties) + } +} + diff --git a/SimcoeExample/SimcoeExample/TrackerTableViewController.swift b/SimcoeExample/SimcoeExample/TrackerTableViewController.swift new file mode 100644 index 0000000..55d0443 --- /dev/null +++ b/SimcoeExample/SimcoeExample/TrackerTableViewController.swift @@ -0,0 +1,40 @@ +// +// TrackerTableViewController.swift +// SimcoeExample +// +// Created by Jonathan Samudio on 2/21/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import UIKit +import Simcoe + +internal final class TrackerTableViewController: UITableViewController { + + var trackers: [TrackerAction]! +} + +extension TrackerTableViewController { + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return trackers.count + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = UITableViewCell() + cell.textLabel?.text = trackers[indexPath.row].name + return cell + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) + trackers[indexPath.row].track() + } +} + +extension TrackerTableViewController { + + static func storyboardInit() -> T { + return UIStoryboard.trackerStoryboard.instantiateViewController(TrackerTableViewController.storyboardID) + } +} diff --git a/SimcoeExample/SimcoeExampleTests/Info.plist b/SimcoeExample/SimcoeExampleTests/Info.plist new file mode 100644 index 0000000..6c6c23c --- /dev/null +++ b/SimcoeExample/SimcoeExampleTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/SimcoeExample/SimcoeExampleTests/SimcoeExampleTests.swift b/SimcoeExample/SimcoeExampleTests/SimcoeExampleTests.swift new file mode 100644 index 0000000..6bfc97f --- /dev/null +++ b/SimcoeExample/SimcoeExampleTests/SimcoeExampleTests.swift @@ -0,0 +1,36 @@ +// +// SimcoeExampleTests.swift +// SimcoeExampleTests +// +// Created by Jonathan Samudio on 2/21/17. +// Copyright © 2017 Prolific Interactive. All rights reserved. +// + +import XCTest +@testable import SimcoeExample + +class SimcoeExampleTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SimcoeTests/mParticle/MPEventTests.swift b/SimcoeTests/mParticle/MPEventTests.swift index e4ad728..6b3ed5d 100644 --- a/SimcoeTests/mParticle/MPEventTests.swift +++ b/SimcoeTests/mParticle/MPEventTests.swift @@ -98,16 +98,6 @@ class MPEventTests: XCTestCase { "Expected result = \(expected); got \(eventError)") } - func test_that_MPEvent_has_type() { - let type = MPEventType.media - - let data = MPEvent.eventData(type: type, name: "Event Type") - let result = try! MPEvent.toEvent(usingData: data) - - XCTAssertEqual(result.type, type, - "Expected result = \(type); got \(result.type)") - } - func test_that_MPEvent_has_name() { let name = "Hello, World" diff --git a/mParticleExample/mParticleExample.xcodeproj/project.pbxproj b/mParticleExample/mParticleExample.xcodeproj/project.pbxproj deleted file mode 100644 index b68e688..0000000 --- a/mParticleExample/mParticleExample.xcodeproj/project.pbxproj +++ /dev/null @@ -1,383 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0C0460CC4E74C7C1DAF81892 /* Pods_mParticleExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 075A0BE6B064899013AA2BA0 /* Pods_mParticleExample.framework */; }; - 270708AE1DBFF5E200A7F4BA /* ExampleProduct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 270708AD1DBFF5E200A7F4BA /* ExampleProduct.swift */; }; - 723FD4CF1C77FEB70069622D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 723FD4CE1C77FEB70069622D /* AppDelegate.swift */; }; - 723FD4D11C77FEB70069622D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 723FD4D01C77FEB70069622D /* ViewController.swift */; }; - 723FD4D41C77FEB70069622D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 723FD4D21C77FEB70069622D /* Main.storyboard */; }; - 723FD4D61C77FEB70069622D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 723FD4D51C77FEB70069622D /* Assets.xcassets */; }; - 723FD4D91C77FEB70069622D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 723FD4D71C77FEB70069622D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 075A0BE6B064899013AA2BA0 /* Pods_mParticleExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_mParticleExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 270708AD1DBFF5E200A7F4BA /* ExampleProduct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleProduct.swift; sourceTree = ""; }; - 723FD4CB1C77FEB70069622D /* mParticleExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mParticleExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 723FD4CE1C77FEB70069622D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 723FD4D01C77FEB70069622D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 723FD4D31C77FEB70069622D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 723FD4D51C77FEB70069622D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 723FD4D81C77FEB70069622D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 723FD4DA1C77FEB70069622D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 7953BD23412008F4D96AB8C6 /* Pods-mParticleExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mParticleExample.release.xcconfig"; path = "../Pods/Target Support Files/Pods-mParticleExample/Pods-mParticleExample.release.xcconfig"; sourceTree = ""; }; - C1516C30BC7AB9E7D447DE08 /* Pods-mParticleExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-mParticleExample.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-mParticleExample/Pods-mParticleExample.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 723FD4C81C77FEB70069622D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0C0460CC4E74C7C1DAF81892 /* Pods_mParticleExample.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 723FD4C21C77FEB70069622D = { - isa = PBXGroup; - children = ( - 723FD4CD1C77FEB70069622D /* mParticleExample */, - 723FD4CC1C77FEB70069622D /* Products */, - 9D25F56F56EFF94CD6F44EB2 /* Pods */, - A4909BDFF000BCFF71573AEC /* Frameworks */, - ); - sourceTree = ""; - }; - 723FD4CC1C77FEB70069622D /* Products */ = { - isa = PBXGroup; - children = ( - 723FD4CB1C77FEB70069622D /* mParticleExample.app */, - ); - name = Products; - sourceTree = ""; - }; - 723FD4CD1C77FEB70069622D /* mParticleExample */ = { - isa = PBXGroup; - children = ( - 723FD4CE1C77FEB70069622D /* AppDelegate.swift */, - 723FD4D01C77FEB70069622D /* ViewController.swift */, - 723FD4D21C77FEB70069622D /* Main.storyboard */, - 723FD4D51C77FEB70069622D /* Assets.xcassets */, - 723FD4D71C77FEB70069622D /* LaunchScreen.storyboard */, - 723FD4DA1C77FEB70069622D /* Info.plist */, - 270708AD1DBFF5E200A7F4BA /* ExampleProduct.swift */, - ); - path = mParticleExample; - sourceTree = ""; - }; - 9D25F56F56EFF94CD6F44EB2 /* Pods */ = { - isa = PBXGroup; - children = ( - C1516C30BC7AB9E7D447DE08 /* Pods-mParticleExample.debug.xcconfig */, - 7953BD23412008F4D96AB8C6 /* Pods-mParticleExample.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - A4909BDFF000BCFF71573AEC /* Frameworks */ = { - isa = PBXGroup; - children = ( - 075A0BE6B064899013AA2BA0 /* Pods_mParticleExample.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 723FD4CA1C77FEB70069622D /* mParticleExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 723FD4DD1C77FEB70069622D /* Build configuration list for PBXNativeTarget "mParticleExample" */; - buildPhases = ( - 820C1B8E4D0C443BE9D548B8 /* [CP] Check Pods Manifest.lock */, - 723FD4C71C77FEB70069622D /* Sources */, - 723FD4C81C77FEB70069622D /* Frameworks */, - 723FD4C91C77FEB70069622D /* Resources */, - C903A518F64670F7E00F34D0 /* [CP] Embed Pods Frameworks */, - 19D1A593ECFE3C73C235148A /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = mParticleExample; - productName = mParticleExample; - productReference = 723FD4CB1C77FEB70069622D /* mParticleExample.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 723FD4C31C77FEB70069622D /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0800; - ORGANIZATIONNAME = "Prolific Interactive"; - TargetAttributes = { - 723FD4CA1C77FEB70069622D = { - CreatedOnToolsVersion = 7.2; - LastSwiftMigration = 0800; - }; - }; - }; - buildConfigurationList = 723FD4C61C77FEB70069622D /* Build configuration list for PBXProject "mParticleExample" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 723FD4C21C77FEB70069622D; - productRefGroup = 723FD4CC1C77FEB70069622D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 723FD4CA1C77FEB70069622D /* mParticleExample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 723FD4C91C77FEB70069622D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 723FD4D91C77FEB70069622D /* LaunchScreen.storyboard in Resources */, - 723FD4D61C77FEB70069622D /* Assets.xcassets in Resources */, - 723FD4D41C77FEB70069622D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 19D1A593ECFE3C73C235148A /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-mParticleExample/Pods-mParticleExample-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 820C1B8E4D0C443BE9D548B8 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - C903A518F64670F7E00F34D0 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-mParticleExample/Pods-mParticleExample-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 723FD4C71C77FEB70069622D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 723FD4D11C77FEB70069622D /* ViewController.swift in Sources */, - 723FD4CF1C77FEB70069622D /* AppDelegate.swift in Sources */, - 270708AE1DBFF5E200A7F4BA /* ExampleProduct.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 723FD4D21C77FEB70069622D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 723FD4D31C77FEB70069622D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 723FD4D71C77FEB70069622D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 723FD4D81C77FEB70069622D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 723FD4DB1C77FEB70069622D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.2; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 723FD4DC1C77FEB70069622D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.2; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 723FD4DE1C77FEB70069622D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C1516C30BC7AB9E7D447DE08 /* Pods-mParticleExample.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = mParticleExample/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.mParticleExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 723FD4DF1C77FEB70069622D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7953BD23412008F4D96AB8C6 /* Pods-mParticleExample.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = mParticleExample/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.prolificinteractive.mParticleExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 723FD4C61C77FEB70069622D /* Build configuration list for PBXProject "mParticleExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 723FD4DB1C77FEB70069622D /* Debug */, - 723FD4DC1C77FEB70069622D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 723FD4DD1C77FEB70069622D /* Build configuration list for PBXNativeTarget "mParticleExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 723FD4DE1C77FEB70069622D /* Debug */, - 723FD4DF1C77FEB70069622D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 723FD4C31C77FEB70069622D /* Project object */; -} diff --git a/mParticleExample/mParticleExample.xcodeproj/xcshareddata/xcschemes/mParticleExample.xcscheme b/mParticleExample/mParticleExample.xcodeproj/xcshareddata/xcschemes/mParticleExample.xcscheme deleted file mode 100644 index 1070fd9..0000000 --- a/mParticleExample/mParticleExample.xcodeproj/xcshareddata/xcschemes/mParticleExample.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -