タグ管理
Universal Tag (utag.js) JavaScriptクライアントサイドを実行するための非レンダリングWKWebViewインスタンスとしてのタグ管理の実装方法を学びます。
このタグ管理機能により、JavaScriptベースのベンダータグをアプリに統合し、Tealium iQを使用してリモートで管理することができます。これはウェブサイトと同様の方法です。
仕組み
タグ管理が有効になっているTealium iQでモバイルプロファイルを作成した後、アプリでTealiumインスタンスを初期化すると、非レンダリングのウェブビューが作成され、TealiumからシンプルなHTMLファイルをロードし、その中でUniversal Tag utag.js
をロードします。このウェブビューはユーザーには表示されません。
- バージョン5.5.0以降、およびiOS 11.0以降を実行している場合は、WKWebViewを使用します。
- バージョン5.4.x以前、またはiOS 10.0以前を実行している場合は、UIWebViewを使用します。
iOS 11.0より低いバージョンをサポートしていてもWKWebViewを使用したい場合は、バージョン5.5.0以降にアップグレードしてください。ただし、visitor_idやその他のクッキーがリセットされるというデメリットがあります。これは、WKHTTPCookieStoreがiOS 11.0でのみサポートされているためです。
サンプル
TealiumのWKWebView
についてより詳しく知るために、WKWebViewサンプルを探索してみてください。
使用法
WKWebView
は、レンダリングされない場合でもUIView
にアタッチする必要があります。これを実現するために、Tealium SDKは非レンダリングのWKWebView
をrootViewController.view
にアタッチしようとします。これは、ウィンドウのrootViewController
がUIViewController
のサブクラスまたはAppleのコンテナビューコントローラ(UINavigationController
またはUITabBarController
)の一つである場合の最も一般的なシナリオです。
アプリが複雑なビュー階層を持っている場合は、viewDidLoad
、viewWillAppear:
、またはviewDidAppear:
でTEALConfiguration
インスタンスにアタッチするビューを構成します。
TEALConfiguration *tealConfig = [TEALConfiguration configurationWithAccount:@"ACCOUNT"
profile:@"PROFILE"
environment:@"ENVIRONMENT"
datasource:@"DATASOURCE"];
tealConfig.view = <UIVIEW>; // 例えば、UIViewControllerのサブクラスのself.view
// このインスタンスの一意のキーで初期化
Tealium *tealium = [Tealium newInstanceForKey:@"INSTANCE" configuration:tealConfig];
パラメータ | タイプ | 説明 | 例 |
---|---|---|---|
account |
String |
Tealiumのアカウント名 | "companyXYZ" |
profile |
String |
Tealiumのプロファイル名 | "main" |
environment |
String |
Tealiumの環境名 | "prod" |
datasource |
String |
(オプション) データソースキー (ない場合はnull に構成) |
"abc123" |
プッシュ通知を受け取った後、アプリがUIViewController
にジャンプし、Tealiumが初期化されたときとビュー階層が異なる場合は、古いTealiumのインスタンスを削除し、アタッチするビューで新しいインスタンスを作成する必要があります。この例は、サンプルアプリのGreenViewController.m
とTealiumHelper.mで示されています。
Objective-C SDKは現在クローズドソースですが、より多くのコンテキストを提供するために、以下のコードスニペットはウェブビューがどのように作成されるかを示しています。
- (UIView *_Nullable)webViewContainer {
if (!_webViewContainer) {
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIViewController *rootViewController = window.rootViewController;
UIViewController *topViewController;
if ([rootViewController isKindOfClass:[UINavigationController class]]) {
topViewController = [((UINavigationController *)rootViewController).viewControllers lastObject];
} else if ([rootViewController isKindOfClass:[UITabBarController class]]) {
topViewController = ((UITabBarController *)rootViewController).selectedViewController;
} else {
topViewController = rootViewController;
}
UIView *view = topViewController.viewIfLoaded;
if (view) {
self.webViewContainer = view;
}
}
return _webViewContainer;
}
ビューはWKWebView
を初期化するために一度だけ使用されます。
TealiumConfig
WKProcessPool
アプリでWKWebView
ウェブビューを使用する場合は、シングルトンのWKProcessPool
インスタンスを作成し、Tealiumをインスタンス化する前に構成します。これにより、アプリがTealium Tag Managementウェブビュー以外のウェブビューを含む場合のクッキー同期問題も防ぎます。
WKProcessPool *wkProcessPool = [[WKProcessPool alloc] init];
例:
_configuration = [TEALConfiguration configurationWithAccount:@"ACCOUNT" profile:@"PROFILE" environment:@"ENV"];
_configuration.wkProcessPool = MyApp.wkProcessPool;
self.tealium = [Tealium newInstanceForKey:@"INSTANCE_KEY" configuration:_configuration];
WKWebviewConfiguration
カスタムのWKWebviewConfiguration
オブジェクトを渡すことを許可し、これはTealium Tag Managementウェブビューによって使用されます。webviewProcessPool
オプションの代わりにこのオプションを使用する場合は、カスタマイズ可能なWKWebviewConfiguration
のprocessPool
プロパティを通じてシングルトンのWKProcessPool
を構成します。
WKWebView
に対する将来のAPI変更が必要になる場合、このオプションを使用することを推奨します。
例:
_configuration = [TEALConfiguration configurationWithAccount:@"ACCOUNT" profile:@"PROFILE" environment:@"ENV"];
WKWebviewConfiguration *webviewConfiguration = [[WKWebViewConfiguration alloc] init];
webviewConfiguration.processPool = MyApp.wkProcessPool;
_configuration.wkWebViewConfig = webviewConfiguration
self.tealium = [Tealium newInstanceForKey:@"INSTANCE_KEY" configuration:_configuration];
最終更新日 :: 2024年May月15日