How It Works
Once you have created a mobile profile in Tealium iQ with Tag Management enabled, when you initialize the Tealium instance in your app, a non-rendered web view is created to load a simple HTML file from the Tealium mCDN network in which to load the Universal Tag utag.js. This web view is never rendered to the user.
Versions 5.5.0 and newer, running iOS 11.0 and newer use WKWebView.
Versions 5.4.x and older, running iOS 10.0 and older use UIWebView.
If you are supporting iOS versions lower than iOS 11.0 and would still like to use WKWebView, then upgrade to version 5.5.0 or newer. The caveat is that your visitor_id and other cookies will be reset. This is because the WKHTTPCookieStore is only supported in iOS 11.0
To better familiarize yourself with Tealium’s WKWebView, explore the WKWebView sample.
WKWebView is required to be attached to a UIView, even if it is not rendered. To accommodate this the Tealium SDK attempts to attach the non-rendered WKWebView to the rootViewController.view, the most common scenario when your window’s rootViewController is a subclass of UIViewController or one of Apple’s container view controllers (UINavigationController or UITabBarController).
If your app has a complex view hierarchy, set the TEALConfiguration instance with a view to attach to in viewDidLoad, viewWillAppear:, or viewDidAppear:.
TEALConfiguration *tealConfig = [TEALConfiguration configurationWithAccount:@"ACCOUNT"
tealConfig.view = <UIVIEW>; // For example, self.view in a UIViewController subclass
// Initialize with a unique key for this instance
Tealium *tealium = [Tealium newInstanceForKey:@"INSTANCE" configuration:tealConfig];
Tealium account name
Tealium profile name
Tealium environment name
(Optional) data source key (Set to null if none)
Upon receiving a push notification, if your app jumps to a UIViewController and has a different view hierarchy than when Tealium was initialized, you must remove the old instance of Tealium and create a new one with the view to attach to. The sample app shows an example of this in GreenViewController.m and TealiumHelper.m.
Although the Objective-C SDK is currently closed source, to provide more context, this following code snippet shows how the web view is created.
The view is only used once to initialize the WKWebView.
If you use a WKWebView webview in your app, create and retain a singleton WKProcessPool instance and set it prior to instantiating Tealium. This also prevents cookie synchronization issues if your app contains other webviews besides the Tealium Tag Management webview.
Permits a custom WKWebviewConfiguration object to be passed, which is used by the Tealium Tag Management webview. If using this option instead of webviewProcessPool option, set the singleton WKProcessPool via the customizable WKWebviewConfigurationprocessPool property.
It is recommended to use this option as it may be required if future API changes are made to WKWebView.