TagManagement モジュール
JavaScriptを実行するために非表示のWKWebViewインスタンスを使用するUniversal Tag(utag.js)のクライアントサイド実装。
使用法
TagManagementモジュールは、JavaScriptを実行するために非表示のWKWebView
インスタンスを使用するUniversal Tag(utag.js
)のクライアントサイド実装です。このモジュールは、Tealium iQタグ管理を使用するアプリで必要とされます。CarthageとCocoaPodsフレームワークビルドに自動的に含まれています。
サポートされているプラットフォーム
- iOS
必要条件
- WebKit(WKWebView)
インストール
Swift Package Manager、CocoaPods、またはCarthageを使用してTagManagementモジュールをインストールします。
Swift Package Manager(推奨)
バージョン1.9.0以降でサポートされているSwift Package Managerは、Tealium Swiftライブラリをインストールする最も簡単で推奨される方法です:
- Xcodeプロジェクトで、ファイル > パッケージ依存関係を追加を選択します。
- リポジトリURLを入力します:
https://github.com/tealium/tealium-swift
- バージョンルールを構成します。通常、
"次のメジャーまで"
が推奨されます。現在のTealium Swiftライブラリバージョンがリストに表示されない場合は、Swiftパッケージキャッシュをリセットします。 - インストールするモジュールのリストから
TagManagement
モジュールを選択し、Xcodeプロジェクトの各アプリターゲットに追加します。フレームワークとライブラリの下にあります。
CocoaPods
CocoaPodsでTagManagementモジュールをインストールするには、以下のpodをPodfileに追加します:
pod 'tealium-swift/TagManagement'
iOS向けのCocoaPodsインストールについて詳しく学びましょう。
Carthage
CarthageでTagManagementモジュールをインストールするには、以下の手順を実行します:
-
Xcodeでアプリターゲットの一般構成ページに移動します。
-
次のフレームワークを組み込みバイナリセクションに追加します:
TealiumTagManagement.framework
iOS向けのCarthageインストールについて詳しく学びましょう。
初期化
モジュールを初期化するには、TealiumConfig
のcollectors
プロパティで指定されていることを確認します。
config.dispatchers = [Dispatchers.TagManagement]
WebView構成のカスタマイズ
アプリバウンドドメイン
アプリがWKAppBoundDomains機能を使用して、アプリ内のwebviewsが通信できるドメインを制限している場合、カスタムWKWebViewConfiguration
を渡し、そのlimitsNavigationsToAppBoundDomains
プロパティをtrue
に構成する必要があります。これを行わないと、すべてのトラッキング呼び出しがオペレーティングシステムによってドロップされます。また、Info.plist
のWKAppBoundDomains
リストに"tags.tiqcdn.com"を含め、Tealium iQで構成したタグのドメイン(例:“google-analytics.com”)も含める必要があります。複数のクライアントサイドタグを使用している場合、アプリ全体で構成できるドメインは最大10個までなので、この数を超える可能性があります。
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",
datasource: "DATASOURCE")
config.dispatchers = [Dispatchers.TagManagement]
let wkWebViewConfiguration = WKWebViewConfiguration()
wkWebViewConfiguration.limitsNavigationsToAppBoundDomains = true
config.webviewConfig = wkWebViewConfiguration
tealium = Tealium(config: config)
プロセスプール
アプリが独自のWKWebView
を使用している場合、クッキー同期の問題を避けるために、Tealiumのwebviewが使用するシングルトンWKProcessPool
インスタンスを渡すか、アプリ内の他のwebviewsと共有するカスタムWkWebViewConfiguration
を渡します。
webviewProcessPoolとwebViewConfigについて学びましょう。
データレイヤー
以下の変数は、各トラッキング呼び出しで送信されます:
変数 | タイプ | 説明 | 例 |
---|---|---|---|
dispatch_service |
String |
トラッキング呼び出しがどのモジュールから来たかを示す静的な文字列 | "tagmanagement" |
WKWebViewについて
バージョン1.7.0以前、このモジュールはUIWebView
を使用していましたが、現在はWKWebView
に置き換えられています。OSはWKWebView
が常にUIView
に接続されていることを要求します。これが接続されていない場合、OSはパフォーマンスを大幅に制限し、JavaScriptが最適に実行されません。これに対応するため、Tag Managementモジュールは非表示のWKWebViewをアプリのルートUIViewに接続しようとします。
アプリが複雑なビュー階層を持っていて、モジュールがrootViewController
を検出していない場合は、viewDidLoad
、viewWillAppear:
、またはviewDidAppear:
でビューを接続するためにTealiumConfigを初期化します。
リリース1.7.1では、ビューの自動検出が大幅に改善され、ほとんどのシナリオでビューを指定する必要がなくなりました。ただし、トラッキング呼び出しが正しく送信されていることを確認するために、アプリでこれをテストする必要があります。詳細はリリースノートをご覧ください。
アプリがプッシュ通知を受け取った際にUIViewController
にジャンプし、Tealiumが初期化されたときとは異なるビュー階層を持っている場合、以下のAPIメソッドを使用して現在のUIView
を更新する必要があります。
override func viewDidLoad() {
super.viewDidLoad()
// this view does not have a navigation controller
if self.navigationController == nil {
// update the current root UIView on the Tealium instance
tealium?.updateRootView(self.view)
}
// Do any additional setup after loading the view.
}
完全な例については、サンプルアプリSwift-WKWebViewをご覧ください。
shouldAddCookieObserver
メソッドを使用すると、クッキー同期に必要なクッキーオブザーバーを使用して、構成後にメインスレッドでクッキーを取得できます。この問題はWKWebView
のバグによるもので、自分のオブザーバーが呼び出されないように防ぎます。
最終更新日 :: 2024年November月6日