VisitorServiceモジュール
ビジターサービスから更新されたビジタープロファイルを取得します。
使用法
VisitorServiceモジュールは、Tealium Customer Data Hubのデータレイヤーのエンリッチメント機能を実装しています。
このモジュールの使用は、Tealium AudienceStreamのライセンスを持っており、モバイルアプリケーションでユーザーエクスペリエンスを向上させるためにビジタープロファイルを使用したい場合に推奨されます。AudienceStreamのライセンスを持っていない場合、このモジュールの使用は推奨されません。
以下のプラットフォームがサポートされています:
- iOS
- tvOS
- watchOS
- macOS
インストール
CocoaPodsまたはCarthageを使用してVisitorServiceモジュールをインストールします。
CocoaPods
CocoaPodsを使用してVisitorServiceモジュールをインストールするには、Podfileに次のポッドを追加します:
pod 'tealium-swift/TealiumCore'
pod 'tealium-swift/TealiumCollect' //または'tealium-swift/TealiumTagManagement'
pod 'tealium-swift/TealiumVisitorService'
フレームワークは自動的にインスタンス化されます。TealiumCore
ポッドとディスパッチサービスのいずれか(TealiumCollect
またはTealiumTagManagement
)に依存しています。iOSのCocoaPodsのインストールについては、詳細を確認してください。
Carthage
Carthageを使用してVisitorServiceモジュールをインストールするには、次の手順に従ってください:
-
Xcodeのアプリのターゲットの一般構成ページに移動します。
-
埋め込みバイナリセクションに次のフレームワークを追加します:
TealiumVisitorService.framework
-
VisitorServiceモジュールをセットアップするには、プロジェクトに次の必須のインポートステートメントを追加します:
import TealiumCore import TealiumCollect //またはimport TealiumTagManagement import TealiumVisitorService
フレームワークは自動的にインスタンス化されます。TealiumCore
に依存しており、少なくとも1つのディスパッチサービス(TealiumCore
またはTealiumTagManagement
)に依存しています。追加のインポートステートメントは必要ありません。
iOSのCarthageのインストールについては、詳細を確認してください。
ビジターデータオブジェクト
ビジタープロファイルは、各属性タイプに対してネイティブな構造体を含むオブジェクトです。ビジタープロファイルオブジェクト内では、currentVisit
プロパティがあり、ビジター/ビジット属性タイプを区別することができます。オーディエンスを除く各属性値は、サブスクリプトを使用してIDでアクセスできます。audiences
属性は、サブスクリプトを使用してクエリされたオーディエンスのメンバーである場合に単にtrue
/false
を返します。以下のリストを参照してください。
属性タイプ
パラメータ | プロパティ | 値 |
---|---|---|
arraysOfBooleans |
id: String, value: [Bool] | id: "5129", value: [true,false,true,true] |
arraysOfNumbers |
id: String, value: [Double] | id: "57", value: [4.82125, 16.8, 0.5714285714285714] |
arraysOfStrings |
id: String, value: [String] | id: "5213", value: ["green shirts", "green shirts", "blue shirts"] |
audiences |
id: String, name: String | id: "tealiummobile\_demo\_103", name: "iOS Users" |
badges |
id: String, value: Bool | id: "2815", value: true |
booleans |
id: String, value: Bool | id: "4868", value: true |
currentVisit |
現在のビジットプロファイルのすべての属性。現在のビジットプロファイルにはオーディエンスまたはバッジは含まれません。 | TealiumCurrentVisitProfile(dates: [DateTime(id: "5376", value: 1567536668080), DateTime(id: "10", value: 1567536668000)], booleans: [Boolean(id: "4530", value: true], numbers: [Number(id: "32", value: 3.8)]) |
dates |
id: String, value: Int | id: "22", value: 1567120112000 |
numbers |
id: String, value: Double | id: "5728", value: 4.82125 |
setOfStrings |
id: String, value: Set[String] | id: "5211", value: ["green shirts", "red shirts", "blue shirts"] |
strings |
id: String, value: String | id: "5380", value: "green shirts" |
tallies |
id: String, value: [TallyValue] | id: "57", [[key: "category 1" count: 2.0], key: "category 2", count: 1.0]] |
tallyValue |
key: String, count: Double | [key: "category 1" count: 2.0] |
arraysOfBooleans
カスタムサブスクリプトを使用すると、IDで配列のブール値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.arraysOfBooleans |
ビジタープロファイル内のすべてのブール配列を返します。 | [BooleanArray] |
[BooleanArray(id: "2333", value: [true,false]), BooleanArray(id: "1123", value: [true,true])] |
profile.arraysOfBooleans["2815"] |
IDでブール配列を返します。 | [Bool] |
true |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// ブール配列の値を返す
if let arraysOfBooleans = profile.arraysOfBooleans?["5279"] {
let numberOfPositiveBools = arraysOfBooleans.map { $0 == true }.count
print(numberOfPositiveBools)
}
}
arraysOfNumbers
カスタムサブスクリプトを使用すると、IDで数値の配列をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.arraysOfNumbers |
ビジタープロファイル内のすべての数値の配列を返します。 | [NumberArray] |
[NumberArray(id: "2333", value: [2.0, 1.0]), NumberArray(id: "1123", value: [4.82125, 3.0])] |
profile.arraysOfNumbers["2815"] |
IDで数値の配列を返します。 | [Double] |
[4.82125, 3.0] |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 数値の配列の値を返す
if let arraysOfNumbers = profile. arraysOfNumbers?["5279"] {
arraysOfNumbers.forEach { number in
if number > 3.0 {
// ... アクションを実行
}
}
}
}
arraysOfStrings
カスタムサブスクリプトを使用すると、IDで文字列の配列をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.arraysOfStrings |
ビジタープロファイル内のすべての文字列の配列を返します。 | [StringArray] |
[StringArray(id: "1033", value: ["Foundation", "Perfume"), StringArray(id: "3390", value: ["Bootleg Jeans", "Dresses"])] |
profile.arraysOfStrings["3390"] |
IDで文字列の配列を返します。 | [String] |
["Bootleg Jeans", "Dresses"] |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 文字列の配列の値を返す
if let arraysOfStrings = profile.arraysOfStrings?["3390"] {
arraysOfStrings.forEach { string in
if string.lowercased().contains("Jeans") {
// ... アクションを実行
}
}
}
}
audiences
カスタムサブスクリプトを使用すると、オーディエンスIDとオーディエンス名によるビジターオーディエンスメンバーシップのチェックができます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.audiences |
ビジターがメンバーであるすべてのオーディエンスを返します。 | [Audience] |
[Audience(id: "tealiummobile\_demo\_103", name: "iOS Users"), Audience(id: "tealiummobile\_demo\_110", name: "Visitors - Known")] |
profile.audiences[id: "103"] |
IDに基づいてビジターがオーディエンスのメンバーであるかどうかに応じてtrue/falseを返します。 | Bool |
true |
profile.audiences[name: "ios users"] |
名前に基づいてビジターがオーディエンスのメンバーであるかどうかに応じてtrue/falseを返します。名前は大文字小文字を区別しません。 | Bool |
false |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// ユーザーが割り当てられている現在のオーディエンスを返す
if let currentVisitorAudiences = profile.audiences {
print("Visitor audiences: \(currentVisitorAudiences)")
// IDでユーザーがオーディエンスに割り当てられているかどうかを確認する
if currentVisitorAudiences[id: "106"] {
print("Visitor is a member of audience id 106")
// ... このオーディエンスのメンバーである場合、適切なアクションを実行
}
// 名前でユーザーがオーディエンスに割り当てられているかどうかを確認する
if currentVisitorAudiences[name: "ios users"] {
print("Visitor is a member of audience iOS Users")
// ... このオーディエンスのメンバーである場合、適切なアクションを実行
}
}
}
badges
カスタムサブスクリプトを使用すると、IDでバッジの値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.badges |
ビジタープロファイル内のすべてのバッジを返します。 | [Badge] |
[Badge(id: "2815", value: true), Badge(id: "2813", value: false)] |
profile.badges["2815"] |
ビジターがバッジを割り当てられているかどうかに応じてtrue/falseを返します。 | Bool |
true |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// バッジの値を返す
if let badgeAssigned = profile.badges?["5279"] {
print(badgeAssigned ? "Badge id 5279 is assigned" : "Badge id 5945 is not assigned")
}
}
booleans
カスタムサブスクリプトを使用すると、IDでブール値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.booleans |
ビジタープロファイル内のすべてのブール値を返します。 | [Boolean] |
[Boolean(id: "5784", value: true), Boolean(id: "1453", value: false)] |
profile.booleans["4692"] |
IDでブール値を返します。 | Bool |
true |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// ブール値を返す
if let booleanValue = profile. booleans?["4479"] {
if booleanValue {
// ... アクションを実行
}
}
}
currentVisit
ビジットのライフタイム属性ではなく、現在のビジットの属性にアクセスできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile. currentVisit |
現在のビジットのスコープ属性を返します。 | TealiumCurrentVisitProfile |
TealiumCurrentVisitProfile (dates: [DateTime(id: "5376", value: 1567536668080), DateTime(id: "10", value: 1567536668000)], booleans: [Boolean(id: "4530", value: true], numbers: [Number(id: "32", value: 3.8)]) |
profile. currentVisit. ### |
###に応じて、必要な属性を返します。AudiencesとBadges以外のすべてのメソッドは適用されます。これらは専らビジター属性であり、ビジットには適用されません。 | 異なる | 異なる |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 現在のビジットの文字列属性を返す
if let currentVisit = profile.currentVisit,
let string = currentVisit.strings?["34"] {
print(string)
// ... アクションを実行
}
}
dates
カスタムサブスクリプトを使用すると、IDで日付の値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.dates |
ビジタープロファイル内のすべての日付を返します。 | [DateTime] |
[DateTime(id: "22", value: 1567120112000), DateTime(id: "13", value: 1567120113245)] |
profile.dates["4692"] |
IDで日付を返します。 | Int |
1567120112000 |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 日付の値を返す
if let date = profile.dates?["33"] {
print(date)
// .. アクションを実行
}
}
numbers
カスタムサブスクリプトを使用すると、IDで数値の値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.numbers |
ビジタープロファイル内のすべての数値を返します。 | [Number] |
[Number(id: "83", value: 0.5714285714285714), Number(id: "1399", value: 2.0)] |
profile.numbers["1399"] |
IDで数値を返します。 | Double |
4.82125 |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 数値の値を返す
if let number = profile. numbers?["1399"] {
if number > 3.0 {
// ... アクションを実行
}
}
}
setsOfStrings
カスタムサブスクリプトを使用すると、IDで文字列のセットの値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.setsOfStrings |
ビジタープロファイル内のすべての文字列のセットを返します。 | [SetOfStrings] |
[SetOfStrings(id: "9938", value: ["shirts"]), SetOfStrings(id: "2300", value: ["Luxury Couch 1", "Luxury Couch 2"])] |
profile.setsOfStrings["2300"] |
IDで文字列のセットを返します。 | Set<String> |
["Luxury Couch 1", "Luxury Couch 2"] |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 文字列のセットの値を返す
if let setOfStrings = profile.setsOfStrings?["5279"] {
if setOfStrings.contains("toys") {
// ... アクションを実行
}
}
}
strings
カスタムサブスクリプトを使用すると、IDで文字列の値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.strings |
ビジタープロファイル内のすべての文字列を返します。 | [VisitorString] |
[Number(id: "83", value: "Toy Truck"), Number(id: "5699", value: "Toy Tea Set")] |
profile.strings["5699"] |
IDで文字列を返します。 | String |
"Toy Tea Set" |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 文字列の値を返す
if let string = profile.strings?["5699"] {
print(string)
// ... アクションを実行
}
}
tallies
およびtallyValue
カスタムサブスクリプトを使用すると、IDで集計をクエリし、IDで集計値をクエリできます。
使用法 | 説明 | タイプ | 例 |
---|---|---|---|
profile.tallies |
ビジタープロファイル内のすべての集計を返します。 | [Tally] |
[Tally(id: "2983", value: [TallyValue(key: "red shirts category", count: 4.0), TallyValue(key: "green shirts category", count: 2.0)]), Tally(id: "5643", value: [TallyValue(key: "girls", count: 3.0), TallyValue(key: "womens", count: 1.0)] ] |
profile.tallies[tally: "1399"] |
IDで集計を返します。 | [TallyValue] |
[TallyValue(key: "girls", count: 3.0), TallyValue(key: "womens", count: 1.0)] |
profile.tallies[tally: "1399", key: "womens"] |
IDで集計を返します。 | Double |
3.0 |
使用例:
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// 集計全体を返す
if let tally = profile.tallies?["1399"] {
print("Tally id 5377: \(tally)")
}
// 集計IDと値のキーを使用して集計値を返す
if let tallyValue = profile.tallies?[tally: "5381", key: "red shirts"]{
print("Tally value for id 5381 and key 'red shirts': \(tallyValue)")
}
}
APIリファレンス
クラス Tealium
更新されたビジタープロファイルに対して操作を行うための次のAPIメソッドが利用可能です。
visitorService()
使用例:
class MyHelperClass {
var tealium: Tealium?
public init () {
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",
datasource: "DATASOURCE",
optionalData: nil)
config.addVisitorServiceDelegate(self)
config.setVisitorServiceRefresh(interval: 10)
self.tealium = Tealium(config) {
// 注意:これは初期化後の完了ブロック内です
// self.tealiumは初期化後の完了ブロック内で保証されています
self.tealium?.visitorService()?.#### // ####はvisitorProfileオブジェクトの任意の公開APIメソッドです - 他のメソッドの例については、他のメソッドを参照してください
}
}
}
requestVisitorProfile()
このメソッドは、ビジターサービスに即座にリクエストを送信して現在のプロファイルを取得します。プロファイルが前回の取得以降に更新されている場合、profileDidUpdate
デリゲートメソッドが呼び出されます。
このメソッドは、トラッキングリクエストが送信されるたびに自動的に呼び出されます(ビジタープロファイルの更新間隔が0
に構成されている場合)。更新間隔の値がより高い場合は、次のスケジュールされた更新を待たずにプロファイルを即座に取得するためにこのメソッドを呼び出すことができます。
self.tealium?.visitorService()?.requestVisitorProfile()
使用例:
func track(title: String, data: [String: Any]?) {
tealium?.track(title: title, data: data, completion: { success, \_, error in
if error != nil {
print("*** Track not completed because of error: \n\(String(describing: error))")
}
if success {
print("*** Track with VisitorService completed ***")
self.tealium?.visitorProfile()?.requestVisitorProfile()
}
})
}
getCachedProfile()
新しいリクエストをトリガーせずに、永続保存から最後に取得したビジタープロファイルを返します。インターネット接続がないが、以前に成功したリクエストがある場合に便利です。
使用例:
self.tealium?.visitorService()?.getCachedProfile(completion: { profile in
guard let profile = profile else { return }
if let json = try? JSONEncoder().encode(profile), let string = String(data: json, encoding: .utf8) {
print(string)
}
})
パラメータ | 説明 | 例 |
---|---|---|
completion: TealiumVisitorProfile? |
removeAllVisitorServiceDelegates()
ビジタープロファイルのデリゲートをすべて削除します。
self.tealium?.visitorService()?.removeAllVisitorServiceDelegates()
addVisitorServiceDelegate()
VisitorServiceDelegate
に準拠する新しいクラスを追加します。
self.tealium?.visitorService()?.addVisitorServiceDelegate(self)
パラメータ | 説明 | 例 |
---|---|---|
delegate: VisitorServiceDelegate に準拠するクラス |
ViewController, TealiumHelper |
removeSingleDelegate()
特定のビジタープロファイルデリゲートを削除します。
使用例:
self.tealium?.visitorService()?.removeSingleDelegate(self)
パラメータ | 説明 | 例 |
---|---|---|
delegate: VisitorServiceDelegate に準拠するクラス |
ViewController, TealiumHelper |
クラス: TealiumVisitorServiceDelegate
profileDidUpdate()
このメソッドは、ビジタープロファイルが更新されたときに呼び出されます。これは、requestVisitorProfile()
メソッドを使用するたびにほぼ毎回呼び出されるでしょう。
func profileDidUpdate(profile: TealiumVisitorProfile?) {
guard let profile = profile else { return }
// プロファイル属性に対して操作を行う
print(profile.audiences)
...
}
クラス: TealiumConfig
setVisitorServiceRefresh()
ビジタープロファイルの取得頻度を構成できます。この構成のデフォルト値は5分です。頻度を調整するためにこのメソッドを使用します。すべてのトラッキングコールにrequestVisitorProfile
メソッドを追加しても、この値を0
に構成しない限り、プロファイルは毎回取得されません。
let config = TealiumConfig(...)
config.setVisitorServiceRefresh(3)
パラメータ | 説明 | 例 |
---|---|---|
interval | ビジタープロファイルを取得する頻度。整数、分単位(デフォルト:5 ) |
3 |
addVisitorServiceDelegate()
config.addVisitorServiceDelegate(self)
デリゲートをVisitorServiceデリゲートの配列に追加して、profileDidUpdate
デリゲートメソッドを使用できるようにします。デリゲートは複数のオブジェクトに割り当てることができます。
パラメータ | 説明 | 例 |
---|---|---|
プロファイルの更新を担当するクラス(デリゲート) | ViewController, TealiumHelper |
getVisitorServiceDelegates()
VisitorServiceモジュールに割り当てられたデリゲートのリストを返します。
config.getVisitorServiceDelegates()
setVisitorServiceOverrideProfile()
ビジタープロファイルの取得元となるプロファイルをオーバーライドします。Collectモジュールで使用されるプロファイルと一致する必要があります。
config. setVisitorServiceOverrideProfile("PROFILE")
setVisitorServiceOverrideURL()
config. setVisitorServiceOverrideURL("https://overridden-subdomain.yourdomain.com/")
ビジタープロファイルの取得元となるベースURLをオーバーライドします。ACCOUNT、PROFILE、およびビジターIDが自動的にURLに追加されます。
リリースノート
1.8.0
- 初回リリース
最終更新日 :: 2024年November月6日