インストール
Xamarin用のTealiumのインストール方法を学びます。
Tealium Xamarinの統合は、Tealium for iOSおよびTealium for Androidとのインターフェースと構成クラスを提供します。
以前のバージョンについては、Tealium for Xamarin 1.xを参照してください。
サンプルアプリ
サンプルアプリを使用して、ライブラリ、トラッキングメソッド、およびベストプラクティスの実装に慣れてください。
コードの取得
インストール
ビジュアルスタジオを使用して、組み込みのNuGetパッケージマネージャーを介してXamarin用のTealiumライブラリを直接インストールします。
利用可能なDLL
Xamarin統合用にいくつかのダイナミックリンクライブラリ(DLL)が利用可能です。
- 共通DLL
このDLLには、クロスプラットフォームのコード、インターフェース、およびXamarinアプリケーション内のすべてのプロジェクトで使用する共通コードが含まれています。このDLLを共有プロジェクトとプラットフォーム固有のプロジェクトの両方に参照として追加します。Tealium.Common.dll
- 抽象化DLL
抽象化DLLは、プラットフォーム固有のプロジェクトでネイティブのTealium SDKのC# APIラッパーを作成するために含まれています。これらのライブラリには、Tealium共通ライブラリが提供するインターフェースと抽象クラスのプラットフォーム固有の具体的なクラス実装が含まれています。クロスプラットフォームのロジックは、共通ライブラリに対してコードを記述します。Tealium.Droid.dll
– Androidモバイルプラットフォーム用Tealium.iOS.dll
– Appleモバイルプラットフォーム用
- プラットフォームDLL
抽象化DLLに参照される各モバイルプラットフォーム固有のDLLがあります。プラットフォームDLLはバインディングライブラリであり、ネイティブのTealium SDKに埋め込まれています。これらはネイティブSDKとの直接的なやり取りのための自動生成されたラッパーコードを提供します。Tealium.Platform.Droid.dll
Tealium.Platform.iOS.dll
バインディングライブラリは単独で使用することもできます。自動生成されるため、各プラットフォームごとに大きく異なる名前空間になるため、セットアップが複雑になる可能性があります。代わりに、Common
およびプラットフォーム固有の抽象化ライブラリを使用することをお勧めします。
ライフサイクルモジュールはデフォルトで含まれています。追加のDLLは必要ありません。
Androidの例
以下の例は、典型的なXamarinベースのアプリの共有プロジェクトとAndroidプラットフォーム固有のプロジェクトを示しています。
例では、共有プロジェクトはTealium.Common.dll
ライブラリのみを参照し、Android固有のプロジェクトは以下のすべてを参照しています。
Tealium.Common.dll
Tealium.Droid.dll
Tealium.Platform.Droid.dll
初期化
インスタンスマネージャー
クラスインスタンスをインスタンス化するには、まずプロジェクトが適切なライブラリを参照していることを確認します。スレッドセーフなTealiumインスタンス管理を提供するTealiumInstanceManager
クラスの使用をお勧めします。
using Tealium.Droid;
//...
ITealiumInstanceManager instanceManager = new TealiumInstanceManager(new TealiumInstanceFactoryDroid(<myAndroidApplication>));
using Tealium.iOS;
//...
ITealiumInstanceManager instanceManager = new TealiumInstanceManager(new TealiumInstanceFactoryIOS());
構成
TealiumInstanceManager
を作成した後、アカウントの詳細と構成を含むTealiumConfig
オブジェクトを作成します。
TealiumConfig tealConfig = new TealiumConfig(
"ACCOUNT",
"PROFILE",
Tealium.Environment.Dev,
new List<Dispatchers> {
Dispatchers.Collect, Dispatchers.RemoteCommands
},
new List<Collectors> {
Collectors.LifeCycle, Collectors.AppData
}
);
TealiumConfigの構成パラメータの完全なリストを参照してください。
インスタンス
TealiumConfig
オブジェクトを作成した後、TealiumInstanceManager
を使用してTealiumインスタンスを作成します。
ITealium tealium = instanceManager.CreateInstance(tealConfig, (tealium) =>
{
// インスタンスが準備できた後のコールバック
// 例:
if (tealium != null)
{
// 成功
}
else
{
// 失敗
}
});
リモートコマンド
リモートコマンドを使用してベンダーSDK内のネイティブコードをトリガーします。Xamarinでは、IRemoteCommand
インターフェースとDelegateRemoteCommand
という組み込みの実装を使用します。
Tealium iQのカスタムコマンドタグと連携するリモートコマンドを作成するには、コマンドIDと説明を追加のパラメータなしで渡し、レスポンスハンドラを定義します。コマンドのデータペイロードにはresp.Payload
でアクセスできます。
ローカルファイルまたはリモートURLオプションを使用してリモートコマンドを作成するには、path
またはurl
パラメータを追加します。
var myCommand = new DelegateRemoteCommand("logger", "Logger command.", path: "FILENAME.json")
{
HandleResponseDelegate = (DelegateRemoteCommand cmd, IRemoteCommandResponse resp) =>
{
var payload = resp.Payload;
System.Diagnostics.Debug.WriteLine($"Command Payload: {payload}");
if (payload.GetValueForKey<Boolean>("frequent_visitor"))
{
// アクションを実行
}
}
};
より高度なソリューションでは、独自のクラスでIRemoteCommand
インターフェースを実装します。
public class MyRemoteCommand : IRemoteCommand
{
private readonly string path;
private readonly string url;
public MyRemoteCommand(string path, string url)
{
this.path = path;
this.url = url;
}
public string CommandId => "logger";
public string Description => "Logger command";
// ローカルJSONマッピングファイルへのパスを構成
public string Path => path;
// リモートJSONマッピングファイルへのURLを構成
public string Url => url;
public void Dispose()
{
// リソースのクリーンアップ
}
public void HandleResponse(IRemoteCommandResponse response)
{
var payload = response.Payload;
System.Diagnostics.Debug.WriteLine($"Command Payload: {payload}");
if (payload.GetValueForKey<Boolean>("frequent_visitor"))
{
// アクションを実行
}
}
}
// Tealium iQにマッピングされたリモートコマンド
var iqCommand = new MyRemoteCommand(null, null);
// ローカルにマッピングされたリモートコマンド
var localCommand = new MyRemoteCommand("FILENAME.json", null);
// リモートにマッピングされたリモートコマンド
var remoteCommand = new MyRemoteCommand(null, "https://tags.tiqcdn.com/dle/ACCOUNT/PROFILE/FILENAME.json");
リモートコマンドを使用するには、TealiumConfig
オブジェクトにDispatcher.RemoteCommands
を含める必要があります。その後、リモートコマンドをTealiumConfig
オブジェクトに追加するか、TealiumインスタンスでAddRemoteCommand()
を呼び出します。
TealiumConfig
を使用する場合:
TealiumConfig config = new TealiumConfig(
"ACCOUNT",
"PROFILE",
Tealium.Environment.Dev,
new List<Dispatchers> {
Dispatchers.Collect, Dispatchers.RemoteCommands
},
remoteCommands: new List<IRemoteCommand>
{
myCommand
}
);
Tealiumインスタンスを使用する場合:
InstanceManager.CreateInstance(config, (tealium) =>
{
if (tealium != null)
{
tealium.AddRemoteCommand(myCommand);
}
});
デリゲートメソッド
Tealium SDK内の処理ロジックにコードを注入するための5つのデリゲートメソッドがあります。
デリゲートメソッド | 説明 |
---|---|
DelegateDispatchValidator() |
[ShouldDropDispatchDelegate() 、ShouldQueueDispatchDelegate() ]の2つのデリゲートメソッドを提供し、booleanの返り値によって既存のディスパッチが破棄されるかキューに入れられるかを決定します。ユーザーがオフラインである可能性があるアプリ内のステップや、独自のバッチ処理ロジックを書きたい場合に使用します。 |
DispatchSentDelegateEventListener() |
ディスパッチが送信されたときに呼び出されます。 |
DispatchQueuedDelegateEventListener() |
ディスパッチがキューに入れられたときに呼び出されます。 |
WebViewReadyDelegateEventListener() |
タグ管理モジュールを使用している場合、非表示のWebビューが完全にロードされて準備ができたときに呼び出されます。 |
SettingsPublishedDelegateEventListener() |
更新された公開構成のセットが取得されたときに呼び出されます |
デリゲートメソッドの例:
static TealiumAdvancedConfig SetupAdvancedConfig() {
DelegateDispatchValidator validator = new DelegateDispatchValidator() {
ShouldDropDispatchDelegate = (ITealium arg1, IDispatch arg2) => {
System.Diagnostics.Debug.WriteLine("Inside ShouldDropDispatchDelegate!");
return false;
},
ShouldQueueDispatchDelegate = (ITealium arg1, IDispatch arg2, bool shouldQueue) => {
System.Diagnostics.Debug.WriteLine("Inside ShouldQueueDispatchDelegate!");
return shouldQueue;
}
};
DispatchSentDelegateEventListener sendingListener = new DispatchSentDelegateEventListener() {
DispatchSent = (tealium, dispatch) => {
System.Diagnostics.Debug.WriteLine("Inside DispatchSent!");
dispatch.PutString("KeyAddedBySendListener", "Value added by sending listener.");
}
};
DispatchQueuedDelegateEventListener queuingListener = new DispatchQueuedDelegateEventListener() {
DispatchQueued = (tealium, dispatch) => {
System.Diagnostics.Debug.WriteLine("Inside DispatchQueued!");
dispatch.PutString("KeyAddedByQueuedListener", "Value added by queuing listener.");
}
};
WebViewReadyDelegateEventListener webViewListener = new WebViewReadyDelegateEventListener() {
WebViewReady = (tealium, webView) => {
System.Diagnostics.Debug.WriteLine("Inside WebViewReady!");
}
};
SettingsPublishedDelegateEventListener settingsListener = new SettingsPublishedDelegateEventListener() {
SettingsPublished = (tealium) => {
System.Diagnostics.Debug.WriteLine("Inside SettingsPublished!");
}
};
TealiumAdvancedConfig advConfig = new TealiumAdvancedConfig(validator,
sendingListener, queuingListener, webViewListener, settingsListener);
return advConfig;
}
リソース
以下のリソースは、TealiumのAndroidおよびiOSライブラリを追加するためのXamarinの詳細なドキュメントへのリンクを提供します。
最終更新日 :: 2024年May月15日