リモートコマンド:Firebase
AndroidおよびSwift/iOSにおけるFirebaseのTealiumリモートコマンド統合です。
要件
- これらのモバイル ライブラリのうちのいずれか:
- Tealium for Android-Kotlin (1.0.0 以降)
- Tealium for Android-Java (5.9.0 以降 (Firebase 2.0.0 以降用) または 5.9.0 以前 (旧バージョン用))
- Tealium for iOS-Swift
- これらのリモート コマンド統合のいずれか:
- Firebase Remote Command JSON File (Android-Kotlin 1.0.0 以降または iOS-Swift 2.1.0 以降が必要)
- Firebase リモート コマンド タグ (Tealium iQ タグ管理)
仕組み
Firebase 統合は、これらのアイテムを使用します:
- Firebase ネイティブ SDK
- Firebase メソッドをラップするリモート コマンド モジュール
- イベント トラッキングをネイティブ Firebase コールに翻訳する、JSON 構成ファイルまたは Remote Command タグのいずれか
Firebase リモート コマンド モジュールをアプリに追加すると、必要な Firebase ライブラリが自動的にインストールされ、ビルドされます。この際、ベンダー固有のコードをアプリに追加する必要はありません。依存関係マネージャのインストールを使用している場合、Firebase SDKを個別にインストールする必要はありません。
リモート コマンド オプションは、次の 2 つがあります: A JSON 構成ファイル、または、マッピングを構成するための iQ タグ管理の使用。A JSON 構成ファイルは、リモートでホスティングするか、またはアプリ内でローカルでホスティングするかのいずれでも、ベンダー統合の推奨オプションです。iQ タグ管理を使用する場合は、ベンダー統合用のリモート コマンド タグを追加します。ベンダー統合の詳細は、こちらから参照してください。
インストール
依存関係マネージャ
JSON 構成ファイルを使用しない場合は、次の依存関係マネージャのいずれかをインストールに使用することをお勧めします。
Tealium iOS(Objective-C)ライブラリを使用している場合は、手動インストール方法を使用してください。CocoaPodsおよびCarthageオプションは、Tealium iOS(Swift)ライブラリを使用している場合にのみ使用可能です。
TealiumFirebase Remote Command を CocoaPods または Carthage によってインストールします。
Swift Package Manager を使用して iOS の Facebook リモート コマンドをインストールするには:
- Xcode プロジェクトで、次のように選択します: [File] > [Add Package…]> [Add Package Dependency]。
- レポジトリの URL として「https://github.com/tealium/tealium-ios-firebase-remote-command」と入力します。
- バージョンルールを構成します。通常は
Up to next major
が推奨されます。現在のTealiumFirebase
バージョンがリストに表示されない場合は、Swift パッケージ キャッシュをリセットします。 - インストールする
TealiumFirebase
モジュールを選択し、モジュールをインストールするアプリ ターゲットを選択します。
プロジェクトにアプリ ターゲットが複数あり、複数のアプリ ターゲットで TealiumFirebase
モジュールが必要な場合は、 [Frameworks, Libraries, and Embedded Content] (フレームワーク、ライブラリ、埋め込みコンテンツ) セクションにそれらを手動で追加する必要があります。
追加のアプリ ターゲットに TealiumFirebase
をインストールするには:
- プロジェクト ナビゲーターで Xcode プロジェクトを選択します。
- Xcode プロジェクトにおいて、 [TARGETS] (ターゲット) セクションでアプリ ターゲットを選択します。
- [General] > [Frameworks, Libraries & Embedded Content] に進み、
TealiumFirebase
モジュールを選択して、アプリ ターゲットに追加します。
Tealium Swift ライブラリからの追加のモジュールを追加するは、 Swift Package Manager の手順に従います。
CocoaPodsを使用してiOSのFirebaseリモートコマンドをインストールするには:
- 以下の行がPodfileに存在する場合は、その行を削除します。
pod "Firebase/Analytics"
- 次の依存関係をPodfileに追加します。
pod "TealiumFirebase"
TealiumFirebase
ポッドには以下のTealiumSwift
依存関係が含まれています。
'tealium-swift/Core'
'tealium-swift/RemoteCommands'
'tealium-swift/TagManagement'
- モジュール
TealiumSwift
およびTealiumFirebase
を、TealiumHelper
ファイル、Tealium
クラスにアクセスするその他のファイル、またはFirebaseリモートコマンドにインポートします。
Carthageを使用してiOSのFirebaseリモートコマンドをインストールするには:
-
tealium-swift
をCartfileから削除します。tealium-swift
の依存関係はTealiumFirebase
フレームワークに既に含まれています。 -
以下の行がCartfileに存在する場合は、その行を削除します。
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
- 次の依存関係をCartfileに追加します。
github "tealium/tealium-ios-firebase-remote-command"
TealiumFirebase
モジュールについて、 xcframework
としてのビルトは、Carthage --use-xcframeworks
フラッグを用いるときにはできません。これは、Firebase が Carthage バイナリ インストールを使用するためです。依存関係をビルドするには、Carthage の公式 Xcode 12 回避策 を用いることを推奨します。
Maven を使用して Android の Firebase リモート コマンドをインストールするには:
-
Tealium for Android (Kotlin) または Tealium for Android (Java) をインストールして、Tealium Maven URL を、プロジェクトのトップレベル
build.gradle
ファイルに追加します (まだ済んでいない場合)。allprojects { repositories { mavenCentral() maven { url "https://maven.tealiumiq.com/android/releases/" } } }
-
次の依存関係を
build.gradle
ファイルに追加します。
dependencies {
implementation 'com.tealium.remotecommands:firebase:1.2.0'
}
手動による手順(iOS)
Firebase リモート コマンドを手動でインストールするには、 Tealium for Swift ライブラリがインストールされている必要があります。iOSプロジェクトのFirebaseリモートコマンドをインストールするには:
-
Firebase SDKをまだインストールしていない場合はインストールします。
-
Tealium iOS Firebaseリモートコマンドレポジトリをクローンして、
Sources
フォルダ内のファイルをプロジェクトにドラッグします。 -
remoteAPIEnabled
構成フラッグをtrue
に構成します
初期化
すべてのTealiumライブラリについて、初期化時にFirebaseモバイルリモートコマンドを登録します。
Android (Kotlin)
Tealium の Kotlin ライブラリ用の JSON 構成ファイルまたはリモート コマンド タグを用いてリモート コマンドを初期化します。
以下のコードは、ローカル ファイル オプションを使用して、JSON Remote Command 機能とともに用いるために設計されています。
val config = TealiumConfig(application,
"ACCOUNT",
"PROFILE",
Environment.DEV,
dispatchers = mutableSetOf(Dispatchers.RemoteCommands));
var tealium = Tealium.create(TEALIUM_MAIN, config) {
val firebase = FirebaseRemoteCommand(application);
// register the command
remoteCommands?.add(firebase, filename = "firebase.json");
}
以下のコードは、Remote Command タグ機能とともに用いるために設計されています。
val config = TealiumConfig(application,
"ACCOUNT",
"PROFILE",
Environment.DEV,
dispatchers = mutableSetOf(Dispatchers.RemoteCommands));
var tealium = Tealium.create(TEALIUM_MAIN, config) {
val firebase = FirebaseRemoteCommand(application);
// register the command
remoteCommands?.add(firebase);
}
Android (Java)
Tealium の Android (Java) ライブラリ用のリモート コマンド タグを用いてリモート コマンドを初期化します。
Android 向けの JSON Remote Command ファイル機能は、Kotlin SDK でのみ利用できます。
以下のコードは、Remote Command タグ機能とともに用いるために設計されています。
RemoteCommand firebase = new FirebaseRemoteCommand(application);
teal.addRemoteCommand(firebase);
iOS (Swift)
Tealium の iOS (Swift) ライブラリ用の JSON 構成ファイルまたはリモート コマンド タグを用いてリモート コマンドを初期化します。
以下のコードは、ローカル ファイル オプションを使用して、JSON Remote Commands 機能とともに用いるために設計されています。
var tealium : Tealium?
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",
dataSource: "DATASOURCE",
optionalData: nil)
config.remoteAPIEnabled = true // Required to use Remote Commands
tealium = Tealium(config: config) { _ in
guard let remoteCommands = self.tealium?.remoteCommands else {
return
}
let firebase = FirebaseRemoteCommand(type: .local(file: "firebase"))
remoteCommands.add(firebase)
}
以下のコードは、Remote Command タグ機能とともに用いるために設計されています。
var tealium : Tealium?
let config = TealiumConfig(account: "ACCOUNT",
profile: "PROFILE",
environment: "ENVIRONMENT",˜˜
dataSource: "DATASOURCE",
optionalData: nil)
config.remoteAPIEnabled = true // Required to use Remote Commands
tealium = Tealium(config: config) { _ in
guard let remoteCommands = self.tealium?.remoteCommands else {
return
}
let firebase = FirebaseRemoteCommand()
remoteCommands.add(firebase)
}
JSON テンプレート
JSON 構成ファイルを使用してリモート コマンドを構成しようとする場合は、まず、以下のテンプレートを参照します。テンプレートには、標準的な E コマースのインストールに用いられる共通マッピングが含まれます。必要に応じて、マッピングを編集します。
{
"config": {
"firebase_analytics_enabled": "true",
"firebase_session_timeout_seconds": "30",
"firebase_log_level": "max",
"firebase_session_minimum_seconds": "100"
},
"mappings": {
"achievement_id": "event.param_achievement_id",
"ad_network_click_id": "event.param_ad_network_click_id",
"affiliation": "event.param_affiliation",
"campaign_keywords": "event.param_cp1",
"campaign": "event.param_campaign",
"game_character": "event.param_character",
"checkout_option": "event.param_checkout_option",
"checkout_step": "event.param_checkout_step",
"content": "event.param_content",
"content_type": "event.param_content_type",
"coupon": "event.param_coupon",
"creative_name": "event.param_creative_name",
"creative_slot": "event.param_creative_slot",
"currency_code": "event.param_currency",
"travel_destination": "event.param_destination",
"end_date": "event.param_end_date",
"flight_number": "event.param_flight_number",
"group_id": "event.param_group_id",
"current_index": "param_index",
"product_brand": "items.param_item_brand",
"product_category": "items.param_item_category",
"product_id": "items.param_item_id",
"product_unit_price": "items.param_price",
"product_quantity": "items.param_quantity",
"product_list": "items.param_item_list",
"product_location_id": "items.param_item_location_id",
"product_name": "items.param_item_name",
"product_variant": "items.param_item_variant",
"current_level": "event.param_level",
"most_recent_location": "event.param_location",
"campaign_medium": "event.param_medium",
"number_nights": "event.param_number_nights",
"number_pax": "event.param_number_pax",
"number_rooms": "event.param_number_rooms",
"travel_origin": "event.param_origin",
"score": "event.param_score",
"search_keyword": "event.param_search_term",
"order_shipping_amount": "event.param_shipping",
"signup_method": "event.param_signup_method",
"campaign_source": "event.param_source",
"start_date": "event.param_start_date",
"order_tax_amount": "event.param_tax",
"product_term": "event.param_term",
"order_id": "event.param_transaction_id",
"travel_class": "event.param_travel_class",
"order_total": "event.param_value",
"currency_type": "event.param_virtual_currency_name",
"user_signup_method": "event.param_user_signup_method",
"event_title": "firebase_event_name",
"screen_name": "firebase_screen_name",
"screen_class": "firebase_screen_class",
"customer_property": "firebase_property_name",
"customer_value": "firebase_property_value",
"customer_id": "firebase_user_id"
},
"commands": {
"launch": "config",
"user_login": "logevent",
"user_register": "logevent,setuserproperty",
"share": "logevent",
"show_offers": "logevent",
"join_group": "logevent",
"travel_order": "logevent",
"earn_currency": "logevent",
"spend_currency": "logevent",
"unlock_achievement": "logevent",
"level_up": "logevent",
"start_tutorial": "logevent",
"stop_tutorial": "logevent",
"record_score": "logevent",
"category": "logevent,setscreenname",
"product": "logevent,setscreenname",
"cart_add": "logevent",
"wishlist_add": "logevent",
"checkout": "logevent,setscreenname",
"checkout_progress": "logevent",
"email_signup": "logevent",
"order": "logevent,setscreenname"
}
}
トラッキング
アプリとの基本的なインタラクションによってトリガーされたイベントは自動的にトラッキングされます。Firebaseによって自動的に収集されるイベントの詳細については、こちらを参照してください。
Firebaseモバイルリモートコマンドタグの構成については、こちらを参照してください。
Google Analytics および Tealium Consent
Google Analytics for Firebase は、アプリ利用とユーザー エンゲージメントについてのインサイトを提供するアプリ測定ソリューションです。これは、Firebase の機能全般を統合し、Firebase SDK を使用して定義された 500 以下の区別されたイベントの無制限のレポートを提供します。
利用可能な公開 API がないことから、Firebase にデータを渡すには、Android または iOS 向けの Firebase ネイティブ SDK を使用します。Tealium の Firebase リモート コマンドは、Firebase SDK に呼び出すことができます。既存のデータレイヤーおよびトラッキング コールを使用すれば、アプリが Android Play Store または Apple App Store にリリースされた後であっても、Firebase SDK の動作は変更可能です。
詳細については Google Analytics for Firebase モバイル統合に関するガイド を参照してください。
同意のパス
ネイティブ スクリーンからウェブビューに同意を渡すオプションが 3 つあります。ウェブ ビュー ページは、一般的なページであって専用でなく、アプリでのみ利用できます。同意管理は、Tealium IQ で有効になっています。
オプション 1: Cookie Tealium iQ Tag Manger および同意管理が有効になっていれば、Tealium が、Cookie が設置されたモバイル ウェブ ビューを使用できます。クライアントは、この Cookie を使えば、ウェブサイトがページ上のコンテンツを読み込む前に同意を読むことができます。
オプション 2: ウェブ ビュー ページへの API リスナー イベントをセットアップし、ユーザーが同意を変更したときは、これをインターセプトして、API コール内で、これを Cookie を設置したウェブ ビューに送信します。
オプション 3: クエリ文字列 ウェブ ビュー ページに既に Tealium consent manager があるので、ネイティブからウェブ ビューに移動するときにクエリ文字列の同意を渡します。次に、Tealium iQ のプリローダー拡張機能を用いてこれを読みます。これで、Cookie が再生成されます。
FAQ
Google が Firebase SDK を更新した場合はどうなるか?
API の大きな変更がないと想定すれば、Firebase SDK を更新するのが安全です。Tealium は、API 機能に対する Firebase 更新をプロアクティブにチェックし、Firebase リモート コマンドに必要な更新を行います。
Firebase SDK は、デフォルトで、トラッキング イベントを自動的に送信します。クライアントが同意する前に停止する方法
Firebase SDK で、構成 firebase_analytics_collection_enabled
を false
に構成します (デフォルト: true
)。 ユーザーの同意が完了したときには、Firebase リモート コマンドを使用して、 true
に戻す変更が可能です。
以下の手順では、ユーザー ジャーニーの概要を示します。
- ユーザーがアプリを開きます
- Firebase が [not collect] (収集しない) (
setAnalyticsCollectionEnabled(false)
) に構成されています - ユーザーが同意についてインタラクションを行い、同意イベントが Tealium に送信されます
- Tealium がメッセージを Firebase SDK に送信し、[collect] (収集する) (
firebase_analytics_enabled = true
) に構成します - ユーザー クリックが Google Analytics にてトラッキングされます
アプリ内で付与された同意についての確認方法
API リクエストを Tealium SDK に送信して、ユーザーが特定のカテゴリに同意しているかどうかを確認できます。 アプリが実行中であれば、いつでもクライアントは、このリクエストができます。
Tealium は同意を保存しません。アプリ内で保持されます。
API を Tealium SDK に使用して、個別のタグをオフにすることができるか?
いいえ、できません。同意のオプトインとオプトアウトは、カテゴリ レベルでなされます。
最終更新日 :: 2024年March月29日