• 手引き
  • プラットフォーム
  • パートナー
  • English
  • TLC Tealium Learning Center Tealium Learning
    Community
  • Discussions & Ideas Dicussions & Ideas
  • Product Guides Product Guides
  • Knowledge Base Knowledge Base
  • Developer Docs Developer Docs
  • Education Education
  • TLC Blog TLC Blog
  • Support Desk Support Desk
  • CDH Customer Data Hub Customer Data Hub

目次

  • サンプルアプリ
  • コードの取得
  • インストール
    • NuGet
  • 初期化
  • 高度な構成
    • リモートコマンド
    • デリゲートメソッド
  • リソース
XAMARIN

インストール

Tealium for Xamarinのインストールについて説明します。

TealiumのXamarin統合には、一連のクロスプラットフォームインターフェイスと、ネイティブのTealium iOSおよびAndroid SDKと連携するための構成クラスが用意されています。

サンプルアプリ

当社のライブラリ、トラッキングメソッド、ベストプラクティスの実装に精通していただけるよう、Xamarinのサンプルアプリをダウンロードできるようになっています。

コードの取得

利用可能なDLL

Xamarin統合では、以下のダイナミックリンクライブラリ(DLL)が利用可能です。

  • Tealium.Common.dll
    このDLLには、Xamarinアプリケーション内のすべてのプロジェクトで使用するクロスプラットフォームコード、インターフェイス、共通コードが含まれています。このDLLを、共通プロジェクトとプラットフォーム固有のプロジェクトの両方に、リファレンスとして追加します。
  • 抽象DLL プラットフォーム固有のプロジェクト内のネイティブTealium SDK向けにC# APIラッパーを作成するための抽象DLLが含まれています。これらのライブラリには、Tealium共通ライブラリにより提供されているインターフェイスおよび抽象クラス向けの、プラットフォーム固有の具象クラスの実装が含まれています。すべてのクロスプラットフォームロジックを共通ライブラリに基づいてコーディングします。
    • Tealium.Droid.dll – Androidモバイルプラットフォーム用
    • Tealium.iOS.dll – Appleモバイルプラットフォーム用

抽象DLLにより参照される、各モバイルプラットフォームに固有のDLLもあります。プラットフォームDLLはバインディングライブラリであるため、ネイティブSDKを埋め込んであります。プラットフォームDLLが提供する自動生成ラッパーコードにより、ネイティブSDKと直接やりとりできるため、必要に応じてスタンドアロンで使用することも可能です。

  • Tealium.Platform.Droid.dll
  • Tealium.Platform.iOS.dll

バインディングライブラリは、単独で使用可能です。ライブラリが自動的に生成されるということは、プラットフォームごとに大きく異なる名前空間ができることになり、開発作業が必要以上に複雑になります。代わりにCommonライブラリや、プラットフォーム固有の抽象ライブラリを利用することを推奨しています。

ライフサイクルモジュール

プラットフォームに関連するDLLを参照することで、任意のライフサイクルモジュールを利用できます。これらはネイティブ同等のSDKのためのバインディングライブラリです。

  • Tealium.Platform.Lifecycle.Droid.dll
  • Tealium.Platform.Lifecycle.iOS.dll

Androidの例

以下の例では、典型的なXamarinベースのアプリのSharedプロジェクトおよびAndroidプラットフォーム固有のプロジェクトを示しています。

Consent Manager Model

この例で示されているように、SharedプロジェクトではTealium.Common.dllのみが参照されているのに対し、Android固有のプロジェクトでは以下のすべてが参照されています。

  • Tealium.Common.dll
  • Tealium.Droid.dll
  • Tealium.Platform.Droid.dll
  • Tealium.Platform.Lifecycle.Droid.dll

インストール

Xamarin向けTealiumライブラリをインストールするには、まず、プロジェクトが適切なライブラリを参照していることを確認します。追加設定が不要で、スレッドセーフなTealiumインスタンスの管理に対応した、TealiumInstanceManagerクラスを使用することをお勧めします。

    using Tealium.Droid;
    //...
    
    ITealiumInstanceManager instanceManager = new TealiumInstanceManager(new TealiumInstanceFactoryDroid(<myAndroidApplication>));
    //Optional Lifecycle Module enablement - must reference Tealium.Platform.Lifecycle.Droid.dll
    TealiumLifecycleManager.SetLifecycleAutoTracking = TealiumDroid.Lifecycle.TealiumLifecycleControlDelegation.SetLifecycleAutoTracking;
    
    using Tealium.iOS;
    //...
    
    ITealiumInstanceManager instanceManager = new TealiumInstanceManager(new TealiumInstanceFactoryIOS());
    //Optional Lifecycle Module enablement - must reference Tealium.Platform.Lifecycle.iOS.dll
    TealiumLifecycleManager.SetLifecycleAutoTracking =TealiumIOS.Lifecycle.TealiumLifecycleControlDelegation.SetLifecycleAutoTracking;
    

    NuGet

    Xamarin向けTealiumライブラリをNuGetパッケージとしてインストールするには、組み込みのNuGetパッケージマネージャを使用してVisual Studioから直接インストールします。Tealium NuGetリストの詳細については、こちらを参照してください。

    初期化

    TealiumInstanceManagerが作成されたら、ネイティブSDKと同様にTealiumインスタンスの作成を開始します。TealiumInstanceManagerは、2つ以上のTealiumプロファイルのデータをトラッキングする必要がある場合に、複数の名前付きインスタンスへのアクセスを提供するMultitonパターンです。

    新しいインスタンスを作成するには、まず、アカウントの詳細とともにTealiumConfigオブジェクトを作成します。

    TealiumConfig tealConfig
         = new TealiumConfig(instance, account, profile, environment, lifecycleAutoTracking);
    
    パラメータ 型 説明 例
    instance String TealiumインスタンスID "tealium_main"
    account String Tealiumアカウントの名前 "companyXYZ"
    profile String Tealiumプロファイルの名前 "main"
    environment String Tealium環境の名前 ["dev", "qa", "prod"]
    lifecycleAutoTracking Boolean (オプション)ライフサイクル自動トラッキング(デフォルト:true) true`, `false

    次に、TealiumInstanceManagerを使用してTealiumインスタンスを作成します。Tealiumインスタンスはイベントのトラッキングに使用します。

    ITealium tealium = instanceManager.CreateInstance(tealConfig);
    

    高度な構成

    TealiumConfigクラスにはオーバーロードされたコンストラクタがあり、そこでオプションのパラメータを指定することによって、Tealium Mobile SDKのより高度な機能の有効と無効を切り替えられるようになっています。すべてのお客様がこれらの機能を必要とするわけではないため、これらのパラメータは任意となっています。

    リモートコマンド

    TagBridgeタグにより提供される機能を使用する必要がある場合、RemoteCommandブロックを含むオブジェクトを使用します。同様に、リモートコマンドなど、SDKのネイティブバージョンで使用されるデリゲートメソッドのコードを提供することもできます。

    モバイル内のイベントの大部分は、データ収集サーバーに送信されてコネクタで処理されるか、タグ管理ウェブビューで処理されてベンダータグをトリガーします。タグ管理に使用されるイベントが、IRemoteCommandインターフェイスを介してネイティブコードにデータを返すという点で、リモートコマンドはさらなる柔軟性を提供します。

    以下のサンプルコードでは、コマンドID(TealiumConsts.REMOTE_COMMAND_IDに設定)を出力しています。この例を使用することで、このセットアップに必要な関連TagBridge Custom Commandタグで構成されているとおり、データの完全なペイロードにアクセスすることもできます。

    static List<IRemoteCommand> SetupRemoteCommands()
    {
        var command = new DelegateRemoteCommand(TealiumConsts.REMOTE_COMMAND_ID, "Test command " + TealiumConsts.REMOTE_COMMAND_ID) {
            HandleResponseDelegate = (DelegateRemoteCommand cmd,
                IRemoteCommandResponse resp) => {
                    System.Diagnostics.Debug.WriteLine($"Handling command {cmd.CommandId}...");
                }
            };
        return new List<IRemoteCommand>() { command };
    }
    

    リモートコマンドの詳細については、こちらを参照してください。

    デリゲートメソッド

    Tealium SDK内でコードを処理ロジックに注入できるデリゲートメソッドが5つあります。

    Delegated メソッド 説明
    DelegateDispatchValidator() 2つのデリゲートメソッド[ShouldDropDispatchDelegate()、ShouldQueueDispatchDelegate()]を提供します。ここで、既存のディスパッチが削除されるかキューに入れられるかは、ブール値の戻り値によって決まります。ユーザーがオフラインである可能性があることがわかっているステップがアプリ内にある場合、または独自のバッチ処理ロジックを具体的に記述する必要がある場合に役立ちます。
    DispatchSentDelegateEventListener() ディスパッチが送信されるたびに呼び出されます
    DispatchQueuedDelegateEventListener() ディスパッチがキューに登録されるたびに呼び出されます
    WebViewReadyDelegateEventListener() Tag Managementモジュールを使用している場合に、WebViewが完全に読み込まれて準備が整った時点で呼び出されます
    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ドキュメントへのリンクです。

    • Xamarin
    • Javaライブラリのバインディング
    • Xamarin - iOS Objective-Cライブラリのバインディング
    • 解説:iOS Objective-Cライブラリのバインディング
    APIリファレンス
    データ管理

     
    • モバイル
    • 始める
      • 概要
      • モバイルの概念
      • クライアントサイド
      • サーバーサイド
      • データレイヤー
      • 同意管理
      • イベントバッチ処理
      • ユーザーの位置情報とジオフェンシング
      • 機能比較
      • トラブルシューティング
    • Remote Commands
      • 概要
      • 仕組み
      • リモートコマンド
        • リモートコマンド:AppsFlyer
        • リモートコマンド:Braze
        • リモートコマンド:Contentsquare
        • リモートコマンド:Facebook
        • Firebase
        • リモートコマンド:Usabilla
    • Android (Java)
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
      • データ管理
      • 同意管理
      • モジュールのリスト
        • Ad Identifierモジュール
        • Crash Reporterモジュール
        • Install Referrerモジュール
        • Lifecycle Trackingモジュール
        • Locationモジュール
        • Optimizely X Trackingモジュール
      • Android TV
      • Android Wear
      • APIリファレンス
        • ConsentManager
        • DataSources
        • LifeCycle
        • Tealium
        • Tealium.Config
        • TealiumLocation
      • リリースノート
    • Cordova
      • 概要
      • インストール
      • トラッキング
      • データ管理
      • モジュールのリスト
        • Ad Identifierモジュール
        • Crash Reporterモジュール
        • Install Referrerモジュール
      • APIリファレンス
      • リリースノート
    • Flutter
      • 概要
      • インストール
      • トラッキング
      • 同意管理
      • データ管理
      • APIリファレンス
      • リリースノート
    • iOS (Objective-C)
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
      • データ管理
      • 同意管理
      • Tag Management
      • モジュールのリスト
        • Lifecycle Trackingモジュール
        • Optimizely X Trackingモジュール
      • tvOS
      • watchOS
      • APIリファレンス
      • リリースノート
    • iOS (Swift)
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
      • データ管理
      • アイデンティティの解決
      • アプリ拡張機能
      • 同意管理
      • モジュール
      • モジュールのリスト
        • AppDataモジュール
        • Attributionモジュール
        • AutoTrackingモジュール
        • Collectモジュール
        • Connectivityモジュール
        • CrashReporterモジュール
        • DataSourceモジュール
        • DefaultStorageモジュール
        • Delegateモジュール
        • DeviceDataモジュール
        • DispatchQueueモジュール
        • FileStorageモジュール
        • Lifecycleモジュール
        • Locationモジュール
        • Loggerモジュール
        • PersistentDataモジュール
        • RemoteCommandsモジュール
        • TagManagementモジュール
        • VisitorServiceモジュール
        • VolatileDataモジュール
      • Objective-Cとの連携
      • 機能比較
      • APIリファレンス
        • TealiumConfig
        • TealiumConsentCategories
        • TealiumConsentManagerDelegate
        • TealiumConsentManager
        • TealiumInstanceManager
        • TealiumPersistentData
        • TealiumVolatileData
        • Tealium
      • リリースノート
    • React Native
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
      • リリースノート
    • Xamarin
      • 概要
      • インストール
      • トラッキング
      • データ管理
      • 同意管理
      • APIリファレンス
      • リリースノート
    • ウェブ
    • AMP
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
    • Angular
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
    • JavaScript (Web)
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
      • ユニバーサルデータオブジェクト(utag_data)
      • ユニバーサルタグ(utag.js)
      • データレイヤーオブジェクト(b)
      • 単一ページアプリケーション
      • 設定
      • デバッグ
      • APIリファレンス
      • リリースノート
    • サーバーサイド
    • C#
      • 概要
      • インストール
      • トラッキング
      • データレイヤー
      • APIリファレンス
      • リリースノート
    • HTTP API
      • 概要
      • エンドポイント
      • データレイヤー
    • Java
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
      • リリースノート
    • Node
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
    • Python
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
    • Roku
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
    • Ruby
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス
    • Unity
      • 概要
      • インストール
      • トラッキング
      • APIリファレンス

    このページはお役にたちましたでしょうか?

    最終更新日 :: 2020年August月27日       ご意見有難うございます。
    • 手引き
    • プラットフォーム
    • パートナー
    • モバイル
    • 始める
    • Remote Commands
    • Android (Java)
    • Cordova
    • Flutter
    • iOS (Objective-C)
    • iOS (Swift)
    • React Native
    • Xamarin
    • ウェブ
    • AMP
    • Angular
    • JavaScript (Web)
    • サーバーサイド
    • C#
    • HTTP API
    • Java
    • Node
    • Python
    • Roku
    • Ruby
    • Unity