Skip to content

Commit

Permalink
[Chore] Update Protocols to be in sync with Android Simcoe (#30)
Browse files Browse the repository at this point in the history
* Update protocols to be in sync with Simcoe Android

* [Feature] Allow users to specify which subspecs to send events (#31)

* Allows users to specify subspecs for event tracking

* [Feature] Mixpanel Subspec (#32)
  • Loading branch information
yoyoyoseob authored Apr 13, 2017
1 parent 8cebdef commit 4bab83e
Show file tree
Hide file tree
Showing 34 changed files with 1,171 additions and 193 deletions.
4 changes: 2 additions & 2 deletions Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ install! 'cocoapods', :deterministic_uuids => false
workspace 'Simcoe'

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

target 'SimcoeTests' do
podspec :path => 'Simcoe.podspec'
Expand All @@ -18,7 +18,7 @@ end

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

end
Expand Down
11 changes: 9 additions & 2 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,27 @@ 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)
- Simcoe/Adobe (1.0.0):
- AdobeMobileSDK (~> 4.13)
- Simcoe/Core
- Simcoe/Core (1.0.0)
- Simcoe/Mixpanel (1.0.0):
- Mixpanel-swift (~> 2.1.3)
- Simcoe/Core
- Simcoe/mParticle (1.0.0):
- mParticle-Apple-SDK (~> 6)
- Simcoe/Core

DEPENDENCIES:
- AdobeMobileSDK (~> 4.13)
- Mixpanel-swift (~> 2.1.3)
- mParticle-Apple-SDK (~> 6)
- Simcoe/Adobe (from `./`)
- Simcoe/Mixpanel (from `./`)
- Simcoe/mParticle (from `./`)

EXTERNAL SOURCES:
Expand All @@ -25,9 +31,10 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
AdobeMobileSDK: 52c3fbf43b5b054132393b1486ecbefca0ba01db
Mixpanel-swift: a50fe20def8fc2ea0f2c912772ad835bd8524dae
mParticle-Apple-SDK: 8c7dfc195459870aa33be634f006342cb37d6a24
Simcoe: 16d83bedf09ba7699471c61caf76aef29d0dc2e9
Simcoe: 3e77a2ef7f0a28b3184cd823cae9682613760d75

PODFILE CHECKSUM: eca652a10d5483dbc0b33408738dd00362f29b2c
PODFILE CHECKSUM: 3168a08aa3eb292250204b2bc967159b719878a0

COCOAPODS: 1.1.1
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ Simcoe comes with default implementations for a wide-variety of providers right

* [Adobe](Simcoe/Adobe/README.md)
* [mParticle](Simcoe/mParticle/README.md)
* [Mixpanel](Simcoe/Mixpanel/README.md)


## Usage
Expand Down Expand Up @@ -101,10 +102,12 @@ While simply implementing this protocol is all you need for your object to be a
* `CheckoutTracking`
* `ErrorLogging`
* `EventTracking`
* `LifetimeValueIncreasing`
* `LifetimeValueTracking`
* `LocationTracking`
* `PageViewTracking`
* `PurchaseTracking`
* `SuperPropertyTracking`
* `TimedEventTracking`
* `UserAttributeTracking`
* `ViewDetailLogging`

Expand Down
3 changes: 2 additions & 1 deletion Simcoe.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ Pod::Spec.new do |s|

adobe = { :name => "Adobe", :dependency => "AdobeMobileSDK", :version => '~> 4.13' }
mParticle = { :name => "mParticle", :dependency => "mParticle-Apple-SDK", :version => '~> 6' }
mixpanel = { :name => "Mixpanel", :dependency => "Mixpanel-swift", :version => '~> 2.1.3' }

all_specs = [adobe, mParticle]
all_specs = [adobe, mParticle, mixpanel]

all_specs.each do |spec|

Expand Down
50 changes: 46 additions & 4 deletions Simcoe.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,21 @@
276A94B31DE659A700774D9E /* EventPropertiesFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94A71DE659A700774D9E /* EventPropertiesFake.swift */; };
276A94B41DE659A700774D9E /* EventTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94A81DE659A700774D9E /* EventTrackingFake.swift */; };
276A94B51DE659A700774D9E /* Failable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94A91DE659A700774D9E /* Failable.swift */; };
276A94B61DE659A700774D9E /* LifetimeValueIncreasingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AA1DE659A700774D9E /* LifetimeValueIncreasingFake.swift */; };
276A94B71DE659A700774D9E /* LocationTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AB1DE659A700774D9E /* LocationTrackingFake.swift */; };
276A94B81DE659A700774D9E /* OutputFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AC1DE659A700774D9E /* OutputFake.swift */; };
276A94B91DE659A700774D9E /* PageViewTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AD1DE659A700774D9E /* PageViewTrackingFake.swift */; };
276A94BA1DE659A700774D9E /* ProductFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AE1DE659A700774D9E /* ProductFake.swift */; };
276A94BB1DE659A700774D9E /* UserAttributesFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 276A94AF1DE659A700774D9E /* UserAttributesFake.swift */; };
2792AE2E1DA4606900FB1E28 /* MPEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2792AE2D1DA4606900FB1E28 /* MPEventTests.swift */; };
2D5888D01E64B27B0035C73D /* LifetimeValueTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5888CF1E64B27B0035C73D /* LifetimeValueTracking.swift */; };
2D5888D21E64B3A20035C73D /* TimedEventTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5888D11E64B3A20035C73D /* TimedEventTracking.swift */; };
2DB15D5D1E64DB380042DE7E /* LifetimeValueTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D5C1E64DB380042DE7E /* LifetimeValueTrackingFake.swift */; };
2DB15D5F1E64E3D30042DE7E /* TimedEventTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D5E1E64E3D30042DE7E /* TimedEventTrackingFake.swift */; };
2DB15D611E64E4EC0042DE7E /* PurchaseTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D601E64E4EC0042DE7E /* PurchaseTrackingFake.swift */; };
2DB15D631E64E60D0042DE7E /* ViewDetailLoggingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D621E64E60D0042DE7E /* ViewDetailLoggingFake.swift */; };
2DB15D651E64F1760042DE7E /* SuperPropertyTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D641E64F1760042DE7E /* SuperPropertyTracking.swift */; };
2DB15D671E64F47F0042DE7E /* SuperPropertyTrackingFake.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D661E64F47F0042DE7E /* SuperPropertyTrackingFake.swift */; };
2DB15D6E1E65B9F20042DE7E /* Mixpanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB15D6D1E65B9F20042DE7E /* Mixpanel.swift */; };
59A60EFA736D92D64FAFFB74 /* Pods_Simcoe.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4BAED5FDA700FDC89B8644 /* Pods_Simcoe.framework */; };
72897FE01C79E25800393482 /* SimcoeLoggingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72897FDF1C79E25800393482 /* SimcoeLoggingTests.swift */; };
72897FE21C79E25800393482 /* Simcoe.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F902ED121C68FA07007975F5 /* Simcoe.framework */; };
Expand Down Expand Up @@ -110,13 +118,22 @@
276A94A71DE659A700774D9E /* EventPropertiesFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventPropertiesFake.swift; sourceTree = "<group>"; };
276A94A81DE659A700774D9E /* EventTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventTrackingFake.swift; sourceTree = "<group>"; };
276A94A91DE659A700774D9E /* Failable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Failable.swift; sourceTree = "<group>"; };
276A94AA1DE659A700774D9E /* LifetimeValueIncreasingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LifetimeValueIncreasingFake.swift; sourceTree = "<group>"; };
276A94AB1DE659A700774D9E /* LocationTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LocationTrackingFake.swift; sourceTree = "<group>"; };
276A94AC1DE659A700774D9E /* OutputFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OutputFake.swift; sourceTree = "<group>"; };
276A94AD1DE659A700774D9E /* PageViewTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PageViewTrackingFake.swift; sourceTree = "<group>"; };
276A94AE1DE659A700774D9E /* ProductFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProductFake.swift; sourceTree = "<group>"; };
276A94AF1DE659A700774D9E /* UserAttributesFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserAttributesFake.swift; sourceTree = "<group>"; };
2792AE2D1DA4606900FB1E28 /* MPEventTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MPEventTests.swift; path = mParticle/MPEventTests.swift; sourceTree = "<group>"; };
2D5888CF1E64B27B0035C73D /* LifetimeValueTracking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LifetimeValueTracking.swift; sourceTree = "<group>"; };
2D5888D11E64B3A20035C73D /* TimedEventTracking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimedEventTracking.swift; sourceTree = "<group>"; };
2DB15D5C1E64DB380042DE7E /* LifetimeValueTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LifetimeValueTrackingFake.swift; sourceTree = "<group>"; };
2DB15D5E1E64E3D30042DE7E /* TimedEventTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimedEventTrackingFake.swift; sourceTree = "<group>"; };
2DB15D601E64E4EC0042DE7E /* PurchaseTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PurchaseTrackingFake.swift; sourceTree = "<group>"; };
2DB15D621E64E60D0042DE7E /* ViewDetailLoggingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewDetailLoggingFake.swift; sourceTree = "<group>"; };
2DB15D641E64F1760042DE7E /* SuperPropertyTracking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SuperPropertyTracking.swift; sourceTree = "<group>"; };
2DB15D661E64F47F0042DE7E /* SuperPropertyTrackingFake.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SuperPropertyTrackingFake.swift; sourceTree = "<group>"; };
2DB15D6D1E65B9F20042DE7E /* Mixpanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Mixpanel.swift; sourceTree = "<group>"; };
2DB6080F1E65CB9B00A997FB /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
6FA69F4C737E782FBEFB8F74 /* Pods_Simcoe_SimcoeTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Simcoe_SimcoeTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
72897FDD1C79E25800393482 /* SimcoeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimcoeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
72897FDF1C79E25800393482 /* SimcoeLoggingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimcoeLoggingTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -186,9 +203,12 @@
276A94751DE6590C00774D9E /* ErrorLogging.swift */,
276A94761DE6590C00774D9E /* EventTracking.swift */,
276A94771DE6590C00774D9E /* LifetimeValueIncreasing.swift */,
2D5888CF1E64B27B0035C73D /* LifetimeValueTracking.swift */,
276A94781DE6590C00774D9E /* LocationTracking.swift */,
276A94791DE6590C00774D9E /* PageViewTracking.swift */,
276A947A1DE6590C00774D9E /* PurchaseTracking.swift */,
2DB15D641E64F1760042DE7E /* SuperPropertyTracking.swift */,
2D5888D11E64B3A20035C73D /* TimedEventTracking.swift */,
276A947B1DE6590C00774D9E /* UserAttributeTracking.swift */,
276A947C1DE6590C00774D9E /* ViewDetailLogging.swift */,
);
Expand All @@ -203,6 +223,15 @@
name = mParticle;
sourceTree = "<group>";
};
2DB15D6C1E64FAEC0042DE7E /* Mixpanel */ = {
isa = PBXGroup;
children = (
2DB15D6D1E65B9F20042DE7E /* Mixpanel.swift */,
2DB6080F1E65CB9B00A997FB /* README.md */,
);
path = Mixpanel;
sourceTree = "<group>";
};
6EC9CA1862EB4824462A8FA3 /* Pods */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -235,12 +264,16 @@
276A94A71DE659A700774D9E /* EventPropertiesFake.swift */,
276A94A81DE659A700774D9E /* EventTrackingFake.swift */,
276A94A91DE659A700774D9E /* Failable.swift */,
276A94AA1DE659A700774D9E /* LifetimeValueIncreasingFake.swift */,
2DB15D5C1E64DB380042DE7E /* LifetimeValueTrackingFake.swift */,
276A94AB1DE659A700774D9E /* LocationTrackingFake.swift */,
276A94AC1DE659A700774D9E /* OutputFake.swift */,
276A94AD1DE659A700774D9E /* PageViewTrackingFake.swift */,
276A94AE1DE659A700774D9E /* ProductFake.swift */,
2DB15D601E64E4EC0042DE7E /* PurchaseTrackingFake.swift */,
2DB15D661E64F47F0042DE7E /* SuperPropertyTrackingFake.swift */,
2DB15D5E1E64E3D30042DE7E /* TimedEventTrackingFake.swift */,
276A94AF1DE659A700774D9E /* UserAttributesFake.swift */,
2DB15D621E64E60D0042DE7E /* ViewDetailLoggingFake.swift */,
);
path = Mocks;
sourceTree = "<group>";
Expand Down Expand Up @@ -289,6 +322,7 @@
F93DF03C1C6E7E0D007B3928 /* Simcoe */ = {
isa = PBXGroup;
children = (
2DB15D6C1E64FAEC0042DE7E /* Mixpanel */,
F94E7CCC1C725D89007E7873 /* Adobe */,
276A93A41DE608EB00774D9E /* Analytics Tracking Protocols */,
F90E8BD01C7B9131009556F4 /* ConsoleOutput.swift */,
Expand Down Expand Up @@ -524,6 +558,10 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2DB15D671E64F47F0042DE7E /* SuperPropertyTrackingFake.swift in Sources */,
2DB15D5F1E64E3D30042DE7E /* TimedEventTrackingFake.swift in Sources */,
2DB15D5D1E64DB380042DE7E /* LifetimeValueTrackingFake.swift in Sources */,
2DB15D631E64E60D0042DE7E /* ViewDetailLoggingFake.swift in Sources */,
276A94BA1DE659A700774D9E /* ProductFake.swift in Sources */,
276A94B01DE659A700774D9E /* CartLoggingFake.swift in Sources */,
276A94B21DE659A700774D9E /* ErrorLoggingFake.swift in Sources */,
Expand All @@ -536,8 +574,8 @@
276A94B81DE659A700774D9E /* OutputFake.swift in Sources */,
276A94B51DE659A700774D9E /* Failable.swift in Sources */,
276A94B41DE659A700774D9E /* EventTrackingFake.swift in Sources */,
2DB15D611E64E4EC0042DE7E /* PurchaseTrackingFake.swift in Sources */,
276A94B91DE659A700774D9E /* PageViewTrackingFake.swift in Sources */,
276A94B61DE659A700774D9E /* LifetimeValueIncreasingFake.swift in Sources */,
72897FF21C7A922C00393482 /* TrackerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -568,6 +606,7 @@
276A93D51DE60AA800774D9E /* OutputOptions.swift in Sources */,
276A93D61DE60AA800774D9E /* Properties.swift in Sources */,
276A94801DE6590C00774D9E /* ErrorLogging.swift in Sources */,
2D5888D21E64B3A20035C73D /* TimedEventTracking.swift in Sources */,
276A94991DE6597700774D9E /* MPEventKeys.swift in Sources */,
276A93D71DE60AA800774D9E /* Simcoe.swift in Sources */,
276A94981DE6597700774D9E /* MPEventGenerationError.swift in Sources */,
Expand All @@ -581,6 +620,9 @@
276A947E1DE6590C00774D9E /* CartLogging.swift in Sources */,
276A93D91DE60AA800774D9E /* TrackingResult.swift in Sources */,
276A93DA1DE60AA800774D9E /* WriteEvent.swift in Sources */,
2DB15D6E1E65B9F20042DE7E /* Mixpanel.swift in Sources */,
2D5888D01E64B27B0035C73D /* LifetimeValueTracking.swift in Sources */,
2DB15D651E64F1760042DE7E /* SuperPropertyTracking.swift in Sources */,
276A94821DE6590C00774D9E /* LifetimeValueIncreasing.swift in Sources */,
276A949D1DE6597700774D9E /* MPTransactionAttributesKeys.swift in Sources */,
);
Expand Down
44 changes: 32 additions & 12 deletions Simcoe/Adobe/Adobe.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import CoreLocation
public class Adobe {

/// The name of the tracker.
open let name = "Adobe Omniture"
public let name = "Adobe Omniture"

/// The default initializer.
public init() { }

/// Starts tracking analytics.
open func start() {
public func start() {
ADBMobile.collectLifecycleData()
}

Expand All @@ -38,29 +38,47 @@ extension Adobe: EventTracking {
public func track(event: String,
withAdditionalProperties properties: Properties?) -> TrackingResult {
ADBMobile.trackAction(event, data: properties)

return .success
}

}

// MARK: - LifetimeValueIncreasing
// MARK: - LifetimeValueTracking

extension Adobe: LifetimeValueIncreasing {
extension Adobe: LifetimeValueTracking {

/// Increases the lifetime value of the key by the specified amount.
/// Tracks the lifetime value.
///
/// - Parameters:
/// - amount: The amount to increase that lifetime value for.
/// - item: The optional item to extend.
/// - key: The lifetime value's identifier.
/// - value: The lifetime value.
/// - properties: The optional additional properties.
/// - Returns: A tracking result.
public func increaseLifetimeValue(byAmount amount: Double, forItem item: String?, withAdditionalProperties properties: Properties?) -> TrackingResult {
var data = properties ?? Properties()
if let item = item {
data[item] = ""
public func trackLifetimeValue(_ key: String, value: Any, withAdditionalProperties properties: Properties?) -> TrackingResult {
var properties = properties ?? Properties()
properties[key] = ""

guard let value = value as? Double else {
return .error(message: "Value must map to a Double")
}

ADBMobile.trackLifetimeValueIncrease(NSDecimalNumber(value: value), data: properties)

return .success
}

/// Track the lifetime values.
///
/// - Parameter:
/// - attributes: The lifetime attribute values.
/// - properties: The optional additional properties.
/// - Returns: A tracking result.
public func trackLifetimeValues(_ attributes: Properties, withAdditionalProperties properties: Properties?) -> TrackingResult {
attributes.forEach { (key, value) in
_ = trackLifetimeValue(key, value: value, withAdditionalProperties: properties)
}

ADBMobile.trackLifetimeValueIncrease(NSDecimalNumber(value: amount), data: data)
return .success
}

Expand All @@ -79,6 +97,7 @@ extension Adobe: LocationTracking {
public func track(location: CLLocation,
withAdditionalProperties properties: Properties?) -> TrackingResult {
ADBMobile.trackLocation(location, data: properties)

return .success
}

Expand All @@ -96,6 +115,7 @@ extension Adobe: PageViewTracking {
/// - Returns: A tracking result.
public func track(pageView: String, withAdditionalProperties properties: Properties?) -> TrackingResult {
ADBMobile.trackState(pageView, data: properties)

return .success
}

Expand Down
10 changes: 2 additions & 8 deletions Simcoe/Adobe/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,9 @@ Adobe automatically implements the following protocols:
- `AnalyticsTracking`
- `PageViewTracking`
- `EventTracking`
- `LifetimeValueIncreasing`
- `LifetimeValueTracking`
- `LocationTracking`

Adobe automatically implements dummy functions for the following protocols:

- `ErrorLogging`
- `UserAttributeTracking`

## Subclassing

The `Adobe` class is able to be subclassed. If you are overriding any Simcoe methods, it is advised that you do _not_ call `super` on them
as you may make analytics calls more than once.
As Simcoe moves toward more composition over inheritance, the `Adobe` class is not subclassable.
Loading

0 comments on commit 4bab83e

Please sign in to comment.