設定値を利用する

Key-Valueで構成される値をKARTE経由で配信したい場合は、設定値配信機能を利用することで実現可能です。

アプリケーションの設定などをKARTEに切り出して管理することで、アプリケーションをリリースすることなく、挙動を変更することが可能になります。

設定値配信は、Karte.iOS.Variables もしくは Karte.Android.Variables パッケージを導入することで利用可能です。

導入手順

1. パッケージをインストール する

Visual Studio のサイドバーから Packages を右クリックし Manage NuGet Packages... をクリックします。検索バーに Karte を入力して Karte.iOS.Variables もしくは Karte.Android.Variables パッケージをインストールしてください。

2. パッケージの初期化コードを追加する(iOSのみ)

アプリケーションにパッケージの初期化コードを追加します。

  1. usingディレクティブを追加
    UIApplicationDelegate を実装したクラスがあるファイル(通常はAppDelegate.cs)に using ディレクティブを追加します。
using Karte.iOS.Variables;
  1. パッケージの初期化コードを追加
    FinishedLaunching(UIApplication, NSDictionary) メソッド内に初期化コードを追加します。
[Export("application:didFinishLaunchingWithOptions:")]
public bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
	KRTApp.SetupWithAppKey("アプリケーションキー");
	...  
	KRTVariables.Configure();
	return true;
}

実装手順

変数参照の実装

1. 変数を取得する

管理画面上で設定した変数は、SDKを初期化しただけでは取得されません。
変数を利用する前に、事前にリモートから取得する必要があります。

  1. パッケージのusingディレクティブを追加
using Karte.iOS.Variables;
using IO.Karte.Android.Variables;
  1. 変数の取得
    変数を取得するには KRTVariables.FetchWithCompletion() もしくは Variables.Fetch() メソッドを呼び出します。
    FetchWithCompletion() / Fetch() は任意のタイミングで呼び出すことが可能ですが、基本的にはアプリケーション起動時(SDKの初期化直後)に呼び出すことを推奨しております。
[Export("application:didFinishLaunchingWithOptions:")]
public bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
	KRTApp.SetupWithAppKey("アプリケーションキー");
	KRTVariables.FetchWithCompletion(delegate (bool isSuccess)
	{
		// 変数取得後の処理
	});
	return true;
}
public override void OnCreate()
{
    base.OnCreate();
    KarteApp.Setup(this, AppKey, config);
    Variables.Fetch((isSuccess) =>
    {
		// 変数取得後の処理
    });
}

FetchWithCompletion() もしくは Fetch() メソッドを呼び出すと、SDKは変数取得( _fetch_variables )イベントを発行し、これをトリガーに設定値配信の接客サービスが配信されます。

この時、配信された接客サービスに含まれる変数は UserDefaults もしくは SharedPreference にキャッシュされます。
加えて、変数を取得した時点で既にキャッシュされた変数がある場合は、キャッシュされた全変数を削除した上で新たに取得した変数をキャッシュします。
また、これと同時にSDKは表示準備( _message_ready )イベントを発行します。

📘

変数名の重複

配信された複数の接客サービスの間で、同名の変数が定義されている場合は、接客サービスの 最終更新日時 が最近のものがキャッシュされます。

2. 変数を参照する

  1. 変数オブジェクトを取得
var variable = KRTVariables.VariableForKey("参照する変数名を指定");
var variable = Variables.Get("参照する変数名を指定");
  1. 変数オブジェクトから値を取得
    管理画面上で設定した変数は、変数オブジェクト内で文字列型で保持されています。
    変数オブジェクトから値を取得して利用する場合は、任意の型にキャストして利用します。
// 文字列型で参照
variable.StringWithDefaultValue("foo");

// プリミティブではない値(String / Array / Dictionary)は、デフォルト値の指定をせず参照することも可能
// 値がない場合は `null` が返ります。
variable.Array;
// 文字列型で参照
variable.GetString("foo");

📘

デフォルト値

キャッシュされていない変数を参照した場合や、指定した型にキャストできない場合にデフォルト値が返ります。

効果測定の実装

設定値配信機能では、配信した変数を利用するだけでなく、その変数を利用した接客の効果を測定することが可能です。

ここでは説明のために、配信した変数を利用してバナーを表示するケースを例に話を進めます。

接客サービス名は「トップバナー」とし、配信する変数は下記の2変数とします。

変数名内容
TOP_BANNER_IMAGE_URLバナー画像のURL
TOP_BANNER_LINK_URLバナー画像をクリックした時の遷移先URL

なお、ここでは変数を利用してバナーを作成する処理については解説しません。
変数の参照については、変数参照の実装 を参考にしてください。

インプレッションを計測する

バナーが表示されたタイミングで、message_open イベントを送信することでインプレッションを計測することが可能です。
なお message_openKRTVariables.TrackVariableOpen(KRTVariable[], NSDictionary) もしくは Variables.TrackOpen(Variable[], IDictionary) メソッドで送信することが可能です。

// バナーが表示されたタイミングで、下記処理を実行
var imgVar = KRTVariables.VariableForKey("TOP_BANNER_IMAGE_URL");
var linkVar = KRTVariables.VariableForKey("TOP_BANNER_LINK_URL");
KRTVariable[] variables = new KRTVariable[] { imgVar, linkVar };
KRTVariables.TrackVariableOpen(variables, null);
// バナーが表示されたタイミングで、下記処理を実行
var imgVar = Variables.Get("TOP_BANNER_IMAGE_URL");
var linkVar = Variables.Get("TOP_BANNER_LINK_URL");
Variable[] variables = new Variable[] { imgVar, linkVar };
Variables.TrackOpen(variables, null);

クリックを計測する

バナーがクリックされたタイミングで、message_click イベントを送信することでクリックを計測することが可能です。
なお message_clickKRTVariables.TrackVariableClick(KRTVariable[], NSDictionary) もしくは Variables.TrackClick(Variable[], IDictionary) メソッドで送信することが可能です。

// バナーがクリックされたタイミングで、下記処理を実行
var imgVar = KRTVariables.VariableForKey("TOP_BANNER_IMAGE_URL");
var linkVar = KRTVariables.VariableForKey("TOP_BANNER_LINK_URL");
KRTVariable[] variables = new KRTVariable[] { imgVar, linkVar };
KRTVariables.TrackVariableClick(variables, null);
// バナーがクリックされたタイミングで、下記処理を実行
var imgVar = Variables.Get("TOP_BANNER_IMAGE_URL");
var linkVar = Variables.Get("TOP_BANNER_LINK_URL");
Variable[] variables = new Variable[] { imgVar, linkVar };
Variables.TrackClick(variables, null);