Skip to content

Commit

Permalink
1.1.0
Browse files Browse the repository at this point in the history
Modularized architecture implemented
iOS Sample app added
macOs Sample app added
tvOS Sample app added
wathcOS Sample app added
new auto data keys: tealium_event_type and app_uuid
  • Loading branch information
jalakoo committed Dec 2, 2016
1 parent 42cd395 commit f703bc0
Show file tree
Hide file tree
Showing 192 changed files with 14,354 additions and 1,703 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*.xcuserstate
*.xcbkptlist
tealium/tealium_debug/Swifter
1 change: 1 addition & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions .swift-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.0
75 changes: 68 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
# Tealium Swift Library 1.0.1
# Tealium Swift Library

This library leverages the power of Tealium's [AudienceStream™](http://tealium.com/products/audiencestream/) making them natively available to Swift applications. Please contact your Account Manager first to verify your agreement(s) for licensed products.
[![License](https://img.shields.io/badge/license-Proprietary-blue.svg?style=flat
)](http://mit-license.org)
[![Platform](http://img.shields.io/badge/platform-ios_osx_tvos_watchos-lightgrey.svg?style=flat
)](https://developer.apple.com/resources/)
[![Language](http://img.shields.io/badge/language-swift-orange.svg?style=flat
)](https://developer.apple.com/swift)

This library leverages the power of Tealium's [AudienceStream™](http://tealium.com/products/audiencestream/) making them natively available to Swift applications.

## What does Tealium do?

Tealium provides the platform for crafting a modern, scalable and flexible marketing technology stack so you can easily connect and integrate all of your best-in-class solutions.
Please contact your Account Manager first to verify your agreement(s) for licensed products.


### What is Audience Stream ?

Tealium AudienceStream is the leading omnichannel customer segmentation and action engine, combining robust audience management and profile enrichment capabilities with the ability to take immediate, relevant action.
Tealium AudienceStream is the leading omnichannel customer segmentation and action engine, combining robust audience management and profile enrichment capabilities with the ability to take immediate, relevant action.

AudienceStream allows you to create a unified view of your customers, correlating data across every customer touchpoint, and then leverage that comprehensive customer profile across your entire digital marketing stack.

Expand All @@ -22,6 +26,51 @@ AudienceStream allows you to create a unified view of your customers, correlatin
* There are many other useful articles on our [community site](https://community.tealiumiq.com).


## Tealium Swift Library Modules

This library employs a drag-and-drop modular architecture when the source files are referenced directly (vs. using a dependency manager).

### What is a module?

Each subfolder within this Tealium folder contains all the files related to one module. Each folder is made up of one or more files, where at least one is a subclass of TealiumModule.

The core module looks for these module files at init time. So module folders can be added and removed (or referenced and derefenced) without requiring code updates (unless module specific APIs are used).


### Required Modules

The core module is the only required component of the library. Howevever, no dispatch calls will be made without a dispatch service module, ie the 'collect' module.


### Optionally Auto-included Modules

These modules are included with .framework builds of the library for dependency managers (ie Carthage):

- appdata
- collect
- logger
- persistentdata
- volatiledata


### Optionally Manual-include Modules

These modules may be added manually to projects but are NOT included with .framework builds for dependency managers, because they require additional entitlements, services, or are not necessary in the majority of use cases.

- attribution


### Default Module Priority List
Module chaining goes from lower-to-higher priority value. The following is the order by which modules will spin up and process track calls based on the default priority setting in their TealiumModuleConfigs:

- 100 Logger (provides debug logging)
- 400 Attribution (adds IDFA to track data)
- 500 AppData (add app_uuid to track data)
- 600 PersistentData (adds ability to add persistent data to all track data)
- 700 VolatileData (adds ability to add session persistent data to all track data - clears upon app termination)
- 1000 Collect (packages and delivers track call to Tealium or custom endpoint)


## Contact Us

* If you have **code questions** or have experienced **errors** please post an issue in the [issues page](../../issues)
Expand All @@ -30,6 +79,18 @@ AudienceStream allows you to create a unified view of your customers, correlatin


## Change Log

- 1.1.0
- New track with type API added
- New auto Tealium variable added:
- app_uuid
- tealium_event_type
- Drag & Drop Module Architecture implemented
- iOS Sample app added
- macOS Sample app added
- tvOS Sample app added
- watchOS Sample app added
- Additional Tests added
- 1.0.1 Swift 3 Syntax Update
- Support for Swift 3.0
- 1.0.0 Initial Release
Expand All @@ -53,6 +114,6 @@ AudienceStream allows you to create a unified view of your customers, correlatin

Use of this software is subject to the terms and conditions of the license agreement contained in the file titled "LICENSE.txt". Please read the license before downloading or using any of the files contained in this repository. By downloading or using any of these files, you are agreeing to be bound by and comply with the license agreement.


---
Copyright (C) 2012-2016, Tealium Inc.
22 changes: 22 additions & 0 deletions builder/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Tealium Swift Library Builder

This project is used to generate the .framework files for Carthage support.

## Contact Us

* If you have **code questions** or have experienced **errors** please post an issue in the [issues page](../../issues)
* If you have **general questions** or want to network with other users please visit the [Tealium Learning Community](https://community.tealiumiq.com)
* If you have **account specific questions** please contact your Tealium account manager


## Change Log

- 1.1.0 Initial Release

## License

Use of this software is subject to the terms and conditions of the license agreement contained in the file titled "LICENSE.txt". Please read the license before downloading or using any of the files contained in this repository. By downloading or using any of these files, you are agreeing to be bound by and comply with the license agreement.


---
Copyright (C) 2012-2016, Tealium Inc.
24 changes: 24 additions & 0 deletions builder/TealiumSwift/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
19 changes: 19 additions & 0 deletions builder/TealiumSwift/TealiumSwift.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// TealiumSwift.h
// TealiumSwift
//
// Created by Merritt Tidwell on 11/9/16.
// Copyright © 2016 tealium. All rights reserved.
//

#import <UIKit/UIKit.h>

//! Project version number for TealiumSwift.
FOUNDATION_EXPORT double TealiumSwiftVersionNumber;

//! Project version string for TealiumSwift.
FOUNDATION_EXPORT const unsigned char TealiumSwiftVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <TealiumSwift/PublicHeader.h>


102 changes: 102 additions & 0 deletions builder/build
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/bin/bash

##########################
# FUNCTIONS
##########################
function moduleFolderPaths {

path=$1

for dir in $1/*/
do
moduleFolderPath+=$dir
printf "Directory found: %s\n" "$dir"
done

echo $moduleFolderPath
}

function copyModuleSourceFiles {

sourcePath=$1
targetPath=$2

# Copy all files (recursively) to targetPath

# TODO:

}


##########################
# GET ARGS
##########################
while getopts ":m:o:s:t:" opt; do
case $opt in
m) modules+=("$OPTARG")
;;
o) output_filename="$OPTARG"
;;
s) source_path="$OPTARG"
;;
t) temp_path="$OPTARG"
;;
\?) echo "Invalid option -$OPTARG"
;;
esac
done

##########################
# MISSING ARGS Check
##########################
if [ -z $modules ]
then
echo "No modules passed in, use -m command to assign"
exit 1
fi

if [ -z $output_filename ]
then
echo "No output filename passed in, use -o command to assign"
exit 1
fi

if [ -z $source_path ]
then
echo "No path for source files passed in, use -s command to assign"
exit 1
fi

if [ -z $temp_path ]
then
echo "No temp path for source copies passed in, use -t command to assign"
exit 1
fi

##########################
# PRINT ARGS - Debug Check
##########################
for module in "${modules[@]}"
do
printf "Include module: %s\n" "${module}"
done
printf "Temp Path (copy to location for source files): %s\n" "$temp_path"
printf "Source Path (root of module folders): %s\n" "$source_path"
printf "Output Filename (name of output framework if applicable): %s\n" "$output_filename"


##########################
# MAIN
##########################

# Clear temp
# Verify / add protections prior
#echo "Clearing Temp folder..."
#rm -rfv $temp_path/*

# Copy all Module Source files to temp
echo "Copying all source files to $temp_path"




24 changes: 24 additions & 0 deletions builder/ios/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
17 changes: 17 additions & 0 deletions builder/ios/Tealium.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// ios.h
// ios
//
// Created by Merritt Tidwell on 11/10/16.
// Copyright © 2016 tealium. All rights reserved.
//

#import <UIKit/UIKit.h>

//! Project version number for ios.
FOUNDATION_EXPORT double iosVersionNumber;

//! Project version string for ios.
FOUNDATION_EXPORT const unsigned char iosVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <ios/PublicHeader.h>
26 changes: 26 additions & 0 deletions builder/macOS/Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2016 tealium. All rights reserved.</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
19 changes: 19 additions & 0 deletions builder/macOS/Tealium.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// macOS.h
// macOS
//
// Created by Jason Koo on 12/2/16.
// Copyright © 2016 tealium. All rights reserved.
//

#import <Cocoa/Cocoa.h>

//! Project version number for macOS.
FOUNDATION_EXPORT double macOSVersionNumber;

//! Project version string for macOS.
FOUNDATION_EXPORT const unsigned char macOSVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <macOS/PublicHeader.h>


File renamed without changes.
Loading

0 comments on commit f703bc0

Please sign in to comment.