グローバル・プロパティの設定
アプリから送信されるすべてのセッションとイベントに自動的にアタッチされるカスタムプロパティを定義することで、レポートでの詳細なデータセグメンテーションが可能になります。
グローバルプロパティを使用すると、必要なユーザー、アプリモード、またはコンテキスト情報を追跡できます。例えば、ゲームアプリでは、"Level "プロパティを作成し、"0 "に初期化します。すべてのセッションとイベントにこのプロパティが含まれ、セッション、イベントカウント、収益をユーザーレベル別に分析できます。
プロパティの仕様
制約と永続性
グローバル・プロパティの制約と永続性の動作を理解します。
- プロパティの最大数:アプリのインストールごとに最大5つのグローバルプロパティを定義できます。
- 永続性:プロパティは、明示的に設定が解除されるか、アプリがアンインストールされるまで、アプリの起動時に最新の値で永続化されます。
- 文字数制限:プロパティ名と値の長さは最大200文字です。長い値は自動的に200文字に切り捨てられます。
- データの可用性:グローバルプロパティは、ユーザーレベルのエクスポートとポストバックでアクセスできます。集計レポートのサポートに関する最新情報については、Singularカスタマーサクセスマネージャーにお問い合わせください。
初期化時のグローバルプロパティの設定
SingularConfigで設定
SDK 初期化時にSingular.init() を呼び出す前にwithGlobalProperty メソッドを使用してグローバルプロパティを設定します。
グローバルプロパティはアプリの起動間で持続するため、プロパティはすでに異なる値で存在している可能性があります。overrideExistingパラメータを使用して、新しい値が既存の値を上書きするかどうかを制御します。
// Set global properties during initialization
val config = SingularConfig("SDK_KEY", "SDK_SECRET")
.withGlobalProperty("MyProperty", "MyValue", true)
.withGlobalProperty("AnotherProperty", "AnotherValue", true)
Singular.init(applicationContext, config)
// Set global properties during initialization
SingularConfig config = new SingularConfig("SDK_KEY", "SDK_SECRET")
.withGlobalProperty("MyProperty", "MyValue", true)
.withGlobalProperty("AnotherProperty", "AnotherValue", true);
Singular.init(getApplicationContext(), config);
メソッドのシグネチャ:
public SingularConfig withGlobalProperty(String key, String value, boolean overrideExisting)
パラメータ:
- キー:プロパティ名(最大200文字)
- 値:プロパティ値(200文字以内)
- overrideExisting:既存のプロパティを同じキーで上書きするかどうか。
初期化後のプロパティの管理
グローバル・プロパティの設定
アプリの実行中に任意の時点でグローバル・プロパティを追加または更新します。
// Set a global property after initialization
val result = Singular.setGlobalProperty("MyProperty", "MyValue", true)
if (result) {
Log.d("Singular", "Property set successfully")
} else {
Log.e("Singular", "Failed to set property")
}
// Set a global property after initialization
boolean result = Singular.setGlobalProperty("MyProperty", "MyValue", true);
if (result) {
Log.d("Singular", "Property set successfully");
} else {
Log.e("Singular", "Failed to set property");
}
メソッドのシグネチャ:
public static boolean setGlobalProperty(String key, String value, boolean overrideExisting)
戻り値:プロパティが正常に設定された場合はtrue 、そうでない場合はfalse
重要
-
重要: 5 つのプロパティが既に存在し、新しいプロパティを追加しようとすると、このメソッドは
falseを返します。 -
overrideExistingパラメータは、既存のプロパティ値を置換するかどうかを決定します。 - 戻り値をチェックして、プロパティが正常に設定されたことを確認します。
グローバル・プロパティの取得
現在設定されているすべてのグローバル・プロパティとその値をマップとして取得します。
// Retrieve all global properties
val properties: Map<String, String> = Singular.getGlobalProperties()
// Iterate through properties
properties.forEach { (key, value) ->
Log.d("Singular", "Property: $key = $value")
}
// Retrieve all global properties
Map<String, String> properties = Singular.getGlobalProperties();
// Iterate through properties
for (Map.Entry<String, String> entry : properties.entrySet()) {
Log.d("Singular", "Property: " + entry.getKey() + " = " + entry.getValue());
}
メソッドのシグニチャ:
public static Map<String, String> getGlobalProperties()
戻り値すべてのグローバル・プロパティのキーと値のペアを含むマップ。
グローバル・プロパティの解除
特定のグローバル・プロパティをそのキーで削除します。
// Remove a specific global property
Singular.unsetGlobalProperty("MyProperty")
// Remove a specific global property
Singular.unsetGlobalProperty("MyProperty");
メソッドのシグニチャ:
public static void unsetGlobalProperty(String key)
パラメータ:
- キー:削除するプロパティの名前。
すべてのグローバル・プロパティの削除
すべてのグローバル・プロパティを一度に削除する。
// Remove all global properties
Singular.clearGlobalProperties()
// Remove all global properties
Singular.clearGlobalProperties();
メソッドのシグネチャ:
public static void clearGlobalProperties()
ベストプラクティス:ユーザがログアウトしたときや、すべてのカスタムトラッキングプロパティをデフォルト状態にリセットする必要があるときに、clearGlobalProperties()。
実装例
完全な使用パターン
アプリケーションのライフサイクルを通じて、アプリレベルとユーザー固有のプロパティを追跡する。
// Initialize SDK with app-level global properties
val config = SingularConfig("SDK_KEY", "SDK_SECRET")
.withGlobalProperty("app_version", BuildConfig.VERSION_NAME, true)
Singular.init(applicationContext, config)
// Set third-party identifier on login
fun onUserLogin(thirdPartyUserId: String) {
val success = Singular.setGlobalProperty("third_party_identifier", thirdPartyUserId, true)
if (success) {
Log.d("Singular", "Third-party identifier set")
}
}
// Clear third-party identifier on logout
fun onUserLogout() {
Singular.unsetGlobalProperty("third_party_identifier")
Log.d("Singular", "Third-party identifier cleared")
}
// Initialize SDK with app-level global properties
SingularConfig config = new SingularConfig("SDK_KEY", "SDK_SECRET")
.withGlobalProperty("app_version", BuildConfig.VERSION_NAME, true);
Singular.init(getApplicationContext(), config);
// Set third-party identifier on login
public void onUserLogin(String thirdPartyUserId) {
boolean success = Singular.setGlobalProperty("third_party_identifier", thirdPartyUserId, true);
if (success) {
Log.d("Singular", "Third-party identifier set");
}
}
// Clear third-party identifier on logout
public void onUserLogout() {
Singular.unsetGlobalProperty("third_party_identifier");
Log.d("Singular", "Third-party identifier cleared");
}
ベストプラクティスサードパーティのアナリティクス識別子(例:Mixpanel distinct_id、Amplitude user_id)をSingularのグローバルプロパティに同期して、統一されたクロスプラットフォームトラッキングを行う。ログイン時にユーザー固有の識別子を設定し、ログアウト時にunsetGlobalProperty() でクリアします。app_version のようなアプリレベルのプロパティは、セッションを超えて持続します。