カスタムコマンド
カスタムコマンドについて学びます。
アプリでiQタグ管理を使用する際、カスタムリモートコマンドは、レンダリングされていないWebビューからネイティブコードブロックをトリガーする機能を提供します。これは、レンダリングされていないWebビュー内に保持されているデータをネイティブコードに戻してさらに処理する必要がある場合に使用されます。
リモートコマンドは、JavaScriptタグがアプリ内のメソッドをトリガーするためのカスタムURLスキームを使用します。レンダリングされていないWebビュー内のタグがアプリにリクエストを送信し、リモートコマンドハンドラがカスタムコードまたはベンダーSDKをトリガーしてリクエストを処理します。
コンポーネント
リモートコマンドには、コマンド名とデータのペイロードがあります。
- コマンド
アプリのネイティブコードに登録されたコマンド、またはコマンドIDの名前。 - ペイロード
ネイティブアプリに渡され、ハンドラのレスポンスコールバックでrequestPayload
という名前のオブジェクトとして受け取られるデータ。
ビルド時にネイティブアプリでリモートコマンドを定義します。カスタムリモートコマンドタグは、デバイス上で事前に定義されたコードのみを実行します。
ネイティブコード
ネイティブコードでは、add()
関数がリモートコマンドハンドラを登録します。コールバック関数response
はresponse.payload
でペイロードにアクセスします。以下の例では、参照されているペイロード変数は、iQタグ管理で構成されたデータレイヤー変数と一致しています。
tealium = Tealium(config: config) { [weak self] _ in
let remoteCommand = RemoteCommand(commandId: "myRemoteCommand", description: "") { response in
guard let payload = response.payload,
let myVariable = payload["myVariable"] as? String else {
return
}
print(myVariable)
}
self.tealium?.remoteCommands?.add(remoteCommand)
}
val remoteCommand = object : RemoteCommand("sample", "testing RCs") {
override fun onInvoke(response: Response) {
Logger.dev(BuildConfig.TAG, "ResponsePayload for webView RemoteCommand ${response.requestPayload}")
}
}
val tealium = Tealium.create(instanceName, config) {
remoteCommands?.add(webViewRemoteCommand)
}
ベンダー統合のモジュールをプラットフォームのビルドスクリプトに追加します。モジュールはTealiumVendorXYZ
の形式で名前が付けられています。例えばTealiumBraze
などです。
インストールするには、ベンダーの依存関係をTealiumのリモートコマンド依存関係に置き換えます。例えば、以下の行を削除します:
pod "VendorXYZ-iOS-SDK"
次に、以下の行を追加します:
pod "TealiumVendorXYZ"
ユースケース:購入調査
以下の手順は、ユーザーが購入を完了した後にアプリで調査をトリガーするためのリモートコマンドの使用方法を示しています。
- ユーザーに調査を促すネイティブコードを作成し、メッセージとURLをメソッドパラメータとして渡します(レンダリングされていないWebビューから)。
- Tealium APIでコードブロックをリモートコマンドとして登録します。
- iQタグ管理でカスタムリモートコマンドタグを追加し、コマンドIDをネイティブコードで登録した同じコマンドに構成します。
survey_title
やsurvey_url
などの特定の変数をアプリに戻すためのデータマッピングを構成します。- ネイティブコードで、レスポンスペイロードで戻された変数を使用してユーザーに調査を表示します。
これらの手順を完了すると、iQタグ管理の拡張機能を使用して調査のタイトル、URL、ロジックを構成できるようになり、アプリを再デプロイすることなく行うことができます。
リモートコマンドタグ
iQタグ管理では、リモートコマンドがカスタムリモートコマンドタグのインスタンスとして構成され、以下の構成が行われます:
- コマンドID
コマンドの名前(ネイティブメソッドaddRemoteCommandID
で使用される同じ名前)。 - ロードルール
リモートコマンドをトリガーするタイミングを決定するルール。 - マップされた変数
リモートコマンドに含めるデータ。マップされたデータレイヤー変数は、ネイティブコードコールバックのresponse.requestPayload
オブジェクトで利用可能です。
例:リモートコマンドタグ
以下は、Swiftでのトラックされたイベントの例です。
tealium?.track(
title: "My Screen",
data: ["tealium_event": "my_event", "my_variable": "my_value"]
);
タグの構成は以下のように定義されます:
- コマンドID
myRemoteCommand
- ロードルール
IF tealium_event EQUALS my_event
- マップされた変数
my_variable -> myVariable
以下のスクリーンショットは、iQタグ管理で構成された例を示しています。
最終更新日 :: 2024年May月15日