インストール
Tealium SDKをiOS(Swift)にインストールする方法を学びます。
現在のTealium for Swift SDKのバージョンは2.xです。以前のバージョンについては、Swift 1.xまたはObjective-Cを参照してください。Swiftコードは、同じプロジェクト内の既存のObjective-Cファイルと共存し、Objective-C APIに完全にアクセスできるため、採用が容易です。
要件
- Xcode 7.0+
- iOS 9.0+、macOS 10.11+、watchOS 3.0+、またはtvOS 9.2+
- Tealium iQ Mobile Profile
- Tealium Customer Data Hub account
サンプルアプリ
iOS(Swift)のサンプルアプリを探索して、Tealiumライブラリ、トラッキング方法、およびベストプラクティスの実装に慣れてください。
Tealiumの実装をアプリの他の部分から抽象化するために、ヘルパークラスの使用をお勧めします。これにより、初期化およびトラッキング呼び出しを行う単一のエントリポイントが提供されます。また、ヘルパーファイル内のコードを更新し、すべてのView
またはSwiftファイルで更新することができます。
サンプルヘルパークラスを探索してください。
インストール
Tealium iOSライブラリはモジュールに分割されています。リソースのフットプリントを小さく保つために、必要なモジュールのみをインストールすることをお勧めします。iOSで利用可能なモジュールについては、詳細を学ぶ。
Tealium for iOSライブラリは、Swift Package Manager、CocoaPods、またはCarthageでインストールします。
Swift Package Manager(推奨)
Swift Package Managerは、Tealium Swiftライブラリをインストールする最も簡単で推奨される方法です:
- Xcodeプロジェクトで、File > Add Package Dependenciesを選択します。
- リポジトリURLを入力します:
https://github.com/tealium/tealium-swift
- バージョンルールを構成します。通常、
Up to next major
が推奨されます。現在のTealium Swiftライブラリバージョンがリストに表示されない場合は、Swiftパッケージキャッシュをリセットします。 - インストールするモジュールを選択し、モジュールをインストールするアプリターゲットを選択します。
プロジェクトに複数のアプリターゲットがあり、より多くのアプリターゲットでTealium Swiftライブラリが必要な場合は、Frameworks and Librariesセクションで手動で追加する必要があります。
追加のアプリターゲットにTealium Swiftライブラリをインストールするには:
- Project NavigatorでXcodeプロジェクトを選択します。
- Xcodeプロジェクトで、TARGETSセクションの下でアプリターゲットを選択します。
- Frameworks and Librariesに移動し、アプリターゲットに追加するTealium Swiftライブラリを選択します。
Swift Package Managerは、パッケージ内のターゲットを特定のプラットフォームに制限することはできません。例えば、iOSのみがサポートするTagManagement
などのモジュールは、非iOSターゲットにも利用可能になります。これらのモジュールは、SPMを介してXCode上の非iOSターゲットに技術的に利用可能になりますが、これらのターゲットにモジュールを追加すると、コンパイラが利用できないシステムライブラリのためにエラーをスローします。この制限は、iOS専用のモジュールはiOSアプリにのみ追加されるべきであるため、ユーザーに影響を与えるべきではありません。
CocoaPods
CocoaPodsを使用してTealium for iOSライブラリをインストールする方法(推奨):
-
PodfileにTealium Swift pod
"tealium-swift"
を追加します。それぞれのモジュールには"Core"モジュールに依存するsubspecがあります。subspecを指定しない場合、すべてのモジュールがデフォルトでインストールされます。# Uncomment the next line to define a global platform for your project platform :ios, '11.0' target 'CPodTest' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for CPodTest # new entry for Tealium pod pod 'tealium-swift' # all modules # pod 'tealium-swift/TagManagement' # to install individual modules only, use subspecs end
-
必要なモジュールを追加したら、次のコマンドを実行します:
pod install
コマンドが正しいPodsを見つけられない場合は、pod repo update
コマンドを実行してみてください。
-
.xcworkspace
ファイルを使用してXcodeプロジェクトを開きます(.xcodeproj
ファイルを使用しないでください)。 -
Tealiumをインスタンス化する予定のファイルに次のインポート文を追加して、任意の数のモジュールをインポートします:
import TealiumSwift
推奨されるPodfile
以下は、Podfileに追加する推奨モジュールのリストです:
Podfileから特定のモジュールを無効にするには、#
でPodfile内の行をコメントアウトするか、行を削除します。
# ...
# *** Recommended minimum:
# All pods depend on Core. Supports all platforms.
pod "tealium-swift/Core"
pod "tealium-swift/Lifecycle"
pod "tealium-swift/Collect" # for Server-side products, e.g. EventStream - usually this or TealiumTagManagement, but not often both
# OR
pod "tealium-swift/TagManagement" # for Tealium iQ
pod "tealium-swift/RemoteCommands"
# *** Optional modules: You may not need these modules. Enable as required. *** #
# Provides Visitor Audience and Attiribute information back to the app
# pod "tealium-swift/VisitorService"
# iOS Only. Gathers app attribution data and advertising IDs.
# pod "tealium-swift/Attribution"
# iOS and tvOS only. Generally not recommended. See separate notes in module documentation.
# pod "tealium-swift/Autotracking"
# See separate notes in module documentation.
# pod "tealium-swift/Location"
# iOS only. Reports detailed crash information.
# Installs separate TealiumCrashReporter dependency (based on PLCrashReporter).
# pod "TealiumCrashModule"
# ...
Carthage
Carthageを使用してTealium for iOS(Swift)をインストールする方法:
-
以下をCartfileに追加します:
github "tealium/tealium-swift"
-
iOS、macOS、tvOS、watchOSのフレームワークを生成するには、次のコマンドを実行します:
carthage update
-
特定のプラットフォーム(例:iOS)のみをビルドし、初回ビルド後の後続のビルドを高速化するには、Carthageの
--platform
引数を使用します:carthage update --platform ios --cache-builds
-
必要なフレームワークをXcodeプロジェクトのGeneral > Embedded Binariesセクションにドラッグします。
Tealiumフレームワークがプロジェクト構成のEmbedded Binariesセクションに追加されていることを確認してください。そうでない場合、アプリは起動時にクラッシュします。
- アプリを提出する際に問題が発生しないように、Carthage Getting Startedドキュメンテーションに記載されている指示に従って、関連するビルドフェーズスクリプトを追加します。
モジュールのインポート
Tealium Swift SDKは、別々のモジュール/フレームワークに分割されています。バイナリサイズを減らし、アプリのパフォーマンスを向上させるために、必要なモジュールの特定のフレームワークのみをインポートします。
モジュールインポートステートメント
- TealiumCore - Tealium、TealiumConfig、TealiumInstanceManagerが必要
- TealiumTagManagement - Tealium iQにトラック呼び出しをディスパッチする必要がある
- TealiumCollect - TealiumのCustomer Data Hubにトラック呼び出しをディスパッチする必要がある
- TealiumRemoteCommands - リモートコマンドAPIと対話する必要がある場合に必要
- TealiumLifecycle - ライフサイクルイベントと関連データを収集する必要がある場合に必要
import TealiumCore
import TealiumTagManagement
import TealiumCollect
import TealiumRemoteCommands
import TealiumLifecycle
Carthageの制限により、SDK全体をインポートする利便性と、完全にモジュラー化されたインストールの柔軟性とパフォーマンス向上の間で選択をする必要がありました。これによるデメリットは、使用したい各モジュールを個別に追加する必要があることです。
- Carthageは_すべて_のモジュールをビルドし、結果として得られた
.framework
ファイルをCarthageビルドディレクトリに出力します。 - 必要のないモジュールを削除し、必要なモジュールをXcodeにドラッグします。
推奨モジュールリストの詳細については、モジュールを参照してください。
初期化
Tealiumを初期化するには、TealiumConfig
インスタンスを Tealium()
コンストラクタに渡します。
トラッキングヘルパークラスを使用して Tealium
インスタンスを管理します。これにより、Tealium iOSライブラリへの単一のエントリーポイントが提供され、将来のアップグレードが簡素化されます。
class TealiumHelper {
static let shared = TealiumHelper()
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",
datasource: "DATASOURCE")
var tealium: Tealium?
private init() {
// 必要な構成オプションを追加
config.batchingEnabled = true
config.logLevel = .debug
// 必要なコレクターを追加
config.collectors = [Collectors.Lifecycle,
Collectors.Location,
Collectors.VisitorService]
// 必要なディスパッチャーを追加
config.dispatchers = [Dispatchers.TagManagement,
Dispatchers.RemoteCommands]
tealium = Tealium(config: config)
// オプションの初期化後の処理
tealium?.dataLayer.add(key: "mykey", value: "myvalue", expiry: .forever)
}
public func start() {
_ = TealiumHelper.shared
}
class func trackView(title: String, data: [String: Any]?) {
let tealView = TealiumView(title, dataLayer: data)
TealiumHelper.shared.tealium?.track(tealView)
}
class func trackEvent(title: String, data: [String: Any]?) {
let tealEvent = TealiumEvent(title, dataLayer: data)
TealiumHelper.shared.tealium?.track(tealEvent)
}
}
以下を置き換えてください:
ACCOUNT
: ライブラリを初期化するために使用したいTealiumアカウント名(小文字)。PROFILE
: ライブラリを初期化するために使用したいTealiumプロファイル名(小文字)。ENVIRONMENT
: Tealiumを初期化したい環境。DATASOURCE
: 使用したいTealiumのデータソース。
モバイルパブリッシュ構成はデフォルトで有効になっており、使用しない場合は無効にする必要があります。iQタグ管理でモバイルパブリッシュ構成を構成するか、config.shouldUseRemotePublishSettings = false
を使用して無効にします。
ログレベル
ログレベルを構成するには、TealiumConfig
インスタンスのlogLevel
プロパティを構成します:
config.logLevel = .debug // または .info, .error, .fault, .silent
デバッグ目的であれば、.debug
が推奨されます。
デフォルトのログタイプはOSLog
ですが、TealiumConfig
オブジェクトのlogType
プロパティを更新することで.print
を使用するように変更することができます:
config.logType = .print
また、TealiumLogger
を使用する代わりに独自のロガーを追加することも可能です。これは、Logger
クラスをTealiumLoggerProtocol
に準拠させ、そのクラスのインスタンスをTealiumConfig
オブジェクトのlogger
プロパティに構成することで行います。以下に例を示します:
class CustomLogger: TealiumLoggerProtocol {
// ... TealiumLoggerProtocolに準拠
// および独自のカスタムメソッド
}
class TealiumHelper {
let customLogger = CustomLogger()
var tealium: Tealium?
// ...
private init() {
config.logger = customLogger
// ...
}
}
AppDelegate Proxy
デフォルトでは、Tealium Swiftライブラリには、アプリのAppDelegateのプロキシが含まれており、ディープリンクの自動トラッキングとモバイルトレースツールを使用したTealiumトレースセッションの開始が自動的に行われます。この機能を使用したくない場合は、TealiumConfig
インスタンスのappDelegateProxyEnabled
プロパティをfalse
に構成します。
config.appDelegateProxyEnabled = false
イベントバッチング
イベントバッチングは、TealiumConfig
インスタンス上でローカルに構成するか、モバイルパブリッシュ構成を使用して構成します。ローカル構成はリモート構成を上書きします。
この例では、イベントバッチングを有効にし、バッチサイズとキューサイズを構成します。
class TealiumHelper {
var tealium: Tealium?
// ...
private init() {
config.batchingEnabled = true // バッチングを有効にする
config.batchSize = 10 // バッチのサイズ
config.dispatchAfter = 25 // 25イベントごとにフラッシュ
config.dispatchQueueLimit = 100 // 最大キューイベント数100
config.dispatchExpiration = 5 // イベントの有効期限は5日後
// ...
}
}
以下のオプションを使用してイベントバッチングをカスタマイズできます。
プロパティ | 説明 |
---|---|
batchingEnabled |
イベントバッチングを有効または無効にします(デフォルトはfalse )。 |
batchSize |
一つのバッチリクエストに組み合わせるイベントの数を構成します(最大:10)。 |
dispatchAfter |
キューがフラッシュされるイベント数を構成します。 |
dispatchExpiration |
バッチの有効期限を日数で構成します。デバイスが長期間オフラインの場合、この期間を超えるとイベントは削除されます。 |
dispatchQueueLimit |
キューイベントの最大数を構成します。この数に達し、キューがフラッシュされていない場合、最も古いイベントが削除されます。 |
タグ管理
タグ管理とイベントバッチングが有効になっている場合、トラッキング呼び出しは個々のJavaScript呼び出しとして非表示のWebViewにディスパッチされます。
構成されたタグは個別にトリガーされ、イベントごとに複数のリクエストがデバイスから送信されます。これにより、リアルタイムイベントを送信するよりもデバイスのパフォーマンスが向上し、デバイスの起動頻度が少なくなります。
Tealium Collect
このエンドポイントは現在、Tealium SDKによって生成された専用のバッチ形式のバッチデータのみを受け入れます。
最終更新日 :: 2024年November月6日