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プロジェクトで、File > Swift Packages > Add Package Dependencyを選択します。
- リポジトリURLを入力します:
https://github.com/tealium/tealium-swift
- バージョンルールを構成します。通常、
"Up to next major"
が推奨されます。現在のTealium Swiftライブラリバージョンがリストに表示されない場合は、Swiftパッケージキャッシュをリセットします。 - インストールするモジュールのリストから
TagManagement
モジュールを選択し、Xcodeプロジェクトの各アプリターゲットに追加します。Frameworks > Libraries & Embedded Contentの下にあります。
CocoaPods
CocoaPodsでTagManagementモジュールをインストールするには、以下のpodをPodfileに追加します:
pod 'tealium-swift/TagManagement'
iOS向けのCocoaPodsインストールについて詳しく学びましょう。
Carthage
CarthageでTagManagementモジュールをインストールするには、以下の手順を実行します:
-
Xcodeでアプリターゲットの一般構成ページに移動します。
-
次のフレームワークをEmbedded Binariesセクションに追加します:
TealiumTagManagement.framework
iOS向けのCarthageインストールについて詳しく学びましょう。
初期化
モジュールを初期化するには、TealiumConfig
のcollectors
プロパティで指定されていることを確認します。
config.dispatchers = [Dispatchers.TagManagement]
WebView構成のカスタマイズ
App Bound Domains
アプリが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)
Process Pool
アプリが独自の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年March月29日