This guide describes how to create and implement an iOS app in Swift to track screen open and button pressed events with Google Tag Manager (GTM).
1. Create a new project
- Open Xcode.
- Click Create a new Xcode project .
- Select Single View Application
.
- Click Next .
- Name your project and choose additional options for it. Your project name and
app name will be the same as the product name.
- Click Next .
- Select a project location (directory).
- Click Create .
2. Install Google Tag Manager dependencies
- Quit Xcode.
- In a terminal, run the following command to install Cocoapods
:
$ sudo gem install cocoapods
- Change to your project directory.
- Run the following command to create a file named
Podfile
:$ pod init
- In
Podfile
, uncommentuse_frameworks!
and addpod 'GoogleTagManager'
to the target: - Run the following command to download and install Google Tag Manager (GTM)
dependencies to your project:
$ pod install
This command also creates the work space
GtmSwiftTutorial.xcworkspace
. From now on, use this work space to develop theGtmSwiftTutorial
app.
# Uncomment this line if you ' re using Swift use_frameworks ! target ' GtmSwiftTutorial ' do pod ' GoogleTagManager ' end
3. Add a bridging header for Objective-C libraries
To create a bridging header file :
- Open Xcode.
- Click File > New > File .
- Under iOS > Source , select Header File .
- Click Next .
- Enter the header file name
BridgingHeader.h
. - Click Create .
- Add these
import
statements to the header file:# ifndef BridgingHeader_h # define BridgingHeader_h # import < GoogleTagManager / TAGManager . h > # import < GoogleTagManager / TAGContainer . h > # import < GoogleTagManager / TAGContainerOpener . h > # import < GoogleTagManager / TAGDataLayer . h > # import < GoogleTagManager / TAGLogger . h > #endif /* BridgingHeader_h */
To add Objective-C bridging header on build settings :
- In Xcode, click your project.
- Click Build Settings
in the editor area.
- Select All
and Combined
and search for bridging
.
- On the right column of the row containing Objective-C Bridging Header
,
enter
BridgingHeader.h
.
4. Add a default container to your project
Before adding a default container to your project, download a mobile container binary:
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- Click Versions at the menu bar.
- Click Actions > Download on the selected container version.
GTM-PT3L9Z
.To add a default container binary to your project:
- Open Xcode.
- Click the Finder icon on the Dock.
- Click the
Downoloads
folder. - Drag the container binary file in the
Downloads
folder and drop it to your Xcode project's root folder.
5. Link Google Tag Manager to your app
- In Xcode, open file
AppDelegate.swift
. - Have the
AppDelegate
class extend theTAGContainerOpenerNotifier
class:import UIKit @UIApplicationMain class AppDelegate : UIResponder , UIApplicationDelegate , TAGContainerOpenerNotifier { // ... }
After you extend the class, you'll get the
Type 'AppDelegate' does not conform to protocol 'TAGContainerOpenerNotifier'
error. The following step will fix this error. - Add the following function to the bottom of the
AppDelegate
class definition:func containerAvailable ( container : TAGContainer !) { container . refresh () }
- In the
application
function, add the following code before thereturn true
statement:let GTM = TAGManager . instance () GTM . logger . setLogLevel ( kTAGLoggerLogLevelVerbose ) TAGContainerOpener . openContainerWithId ( "GTM-PT3L9Z" , // change the container ID "GTM-PT3L9Z" to yours tagManager : GTM , openType : kTAGOpenTypePreferFresh , timeout : nil , notifier : self )
6. Track screen open event
To track a screen open event:
- Create a variable to store the tracking ID.
- Create a data layer variable named screenName .
- Create a GTM tag titled Screen View .
- Add screen tracking code.
a. Create a variable to store the tracking ID
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Variables .
- Under User-Defined Variables , click New .
- Click Untitled Variable to enter the variable name Tracking ID .
- Choose Constant as the variable type.
- Enter the tracking ID (in the form of
UA-XXXXXXXX-X
, whereX
is a digit) as the value of the variable.UseUA-47605289-5
(to be deleted). - Click Create Variable .
b. Create a data layer variable named screenName
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Variables .
- Under User-Defined Variables , click New .
- Click Untitled Variable to enter the title Screen Name .
- Choose Data Layer Variable as the variable type.
- Enter screenName as the Data Layer Variable Name .
- Click Set Default Value .
- Enter the default value unknown screen .
- Click Create Variable .
c. Create a GTM tag titled Screen View
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Tags .
- Click New .
- Click Untitled Tag to enter the tag name Screen View .
- Choose product Google Analytics .
- Select Tracking ID from the list.
- Select App View as the Track Type .
- Click More settings .
- Click Fields to Set .
- Click + Add Field .
- Select field name screenName and its value Screen Name .
- Click Continue .
- Under Fire On , select Any Event .
- Click Create Tag .
d. Add screen tracking code
- Open file
ViewController.swift
in Xcode. - Define a variable named
dataLayer
inside theViewController
class:var dataLayer : TAGDataLayer = TAGManager . instance (). dataLayer
- In the
viewDidLoad()
function, push theOpenScreen
event to the data layer:dataLayer . push ([ "event" : "OpenScreen" , "screenName" : "Home Screen" ])
The definition of the ViewController
class looks like this:
import UIKit class ViewController : UIViewController { var dataLayer : TAGDataLayer = TAGManager . instance (). dataLayer override func viewDidLoad () { super . viewDidLoad () dataLayer . push ([ "event" : "OpenScreen" , "screenName" : "Home Screen" ]) } override func didReceiveMemoryWarning () { super . didReceiveMemoryWarning () // Dispose of any resources that cant be recreated } }
7. Track button pressed event
To track a button pressed event:
- Create a data layer variable named eventAction .
- Create a custom event variable named Event .
- Create a GTM tag titled Button Pressed .
- Create a button and add code to track that the button is pressed.
a. Create a data layer variable named eventAction
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Variables .
- Under User-Defined Variables , click New .
- Click Untitled Variable to enter the title Event Action .
- Choose Data Layer Variable as the variable type.
- Enter eventAction as the Data Layer Variable Name .
- Click Set Default Value .
- Enter the default value unknown event .
- Click Create Variable .
b. Create a custom event variable named Event
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Variables .
- Under User-Defined Variables , click New .
- Click Untitled Variable to enter the variable name Event .
- Choose Custom Event as the variable type.
- Click Create Variable .
c. Create a GTM tag titled Button Pressed
- Sign in to your Google Tag Manager account.
- Select a mobile container.
- On the left navigation bar, click Tags .
- Click New .
- Click Untitled Tag to enter the tag name Button Pressed .
- Choose product Google Analytics .
- Select Tracking ID from the list.
- Select Event as the Track Type .
- Select Event category.
- Select Event Action .
- Click Continue .
- Under Fire On , select Any Event .
- Click Create Tag .
d. Create a button and add code to track that the button is pressed
- Open your Xcode project.
- Open
Main.storyboard
. - Click the top rightmost button in the Xcode toolbar to open
the utility area (right sidebar).
- At the bottom of the utility area,
click the Show the Object library button (the blue button):
- Enter button
at the search box.
- Drag Button
to the storyboard and drop it in the top
left corner.
- Click the assistant editor button
in the Xcode toolbar.
- While holding down the Ctrl
key, drag the button and drop it
to the bottom of the
ViewController
class definition. - In the dialog, select Action
connection, enter the function name buttonPressed
, and click Connect
.
This adds the following function to the end of the
ViewController
class definition:@IBAction func buttonPressed ( sender : AnyObject ) { }
The function is executed every time the button is pressed.
- In the
buttonPressed
function, add the following code to push theButtonPressed
event to the day layer:@IBAction func buttonPressed ( sender : AnyObject ) { dataLayer . push ([ "event" : "ButtonPressed" , "eventAction" : "Test Event" ]) }
8. Build and run your app
In Xcode, click Product > Run . Xcode will build and run the app:
