グローバル・プロパティの設定
アプリから送信されるすべてのセッションとイベントに自動的にアタッチされるカスタムプロパティを定義することで、レポートでの詳細なデータセグメンテーションが可能になります。
グローバルプロパティを使用すると、必要なユーザー、アプリモード、またはコンテキスト情報を追跡できます。例えば、ゲームアプリでは、ユーザーの進行に応じて更新される「Level」プロパティを「0」に初期化して作成します。すべてのセッションとイベントにこのプロパティが含まれ、セッション、イベントカウント、収益をユーザーレベル別に分析できます。
プロパティの仕様
制約と永続性
グローバル・プロパティの制約と永続性の動作を理解します。
- プロパティの最大数:アプリのインストールごとに最大5つのグローバルプロパティを定義できます。
- 永続性:プロパティは、明示的に設定が解除されるか、アプリがアンインストールされるまで、アプリの起動時に最新の値で永続化されます。
- 文字数制限:プロパティ名と値の長さは200文字までです。長い値は自動的に200文字に切り捨てられます。
- データの可用性:グローバルプロパティは、ユーザーレベルのエクスポートとポストバックでアクセスできます。 集計レポートのサポートに関する最新情報については、Singularカスタマーサクセスマネージャーにお問い合わせください。
初期化時のグローバルプロパティの設定
SDK初期化前の設定
グローバルプロパティが初期セッションに含まれるように、SetGlobalProperty() を使用して SDK 初期化前に設定します。
グ ロ ーバル プ ロ パテ ィ はアプ リ の起動間で持続す る ので、 プ ロ パテ ィ はすでに異な る 値で存在 し てい る 可能性があ り ます。
overrideExisting パラメータを使用して、新しい値が既存の値を上書きするかどうかを制御します。
重要:最初のセッションにグローバルプロパティを含めたい場合は、SingularSDKObject InspectorのInitialize On Awakeフラグを無効にし、プロパティを設定した後に手動でSDKを初期化してください。
using UnityEngine;
using Singular;
public class SingularInitializer : MonoBehaviour
{
void Awake()
{
// Set global properties before SDK initialization
SingularSDK.SetGlobalProperty("app_version", Application.version, true);
SingularSDK.SetGlobalProperty("user_type", "free", true);
// Manually initialize SDK to ensure properties are in first session
SingularSDK.InitializeSingularSDK();
}
}
メソッドのシグネチャ
public static bool SetGlobalProperty(string key, string value, bool overrideExisting)
パラメータ
- キー:プロパティ名(最大200文字)
- 値:プロパティ値(200文字以内)
- overrideExisting:既存のプロパティを同じキーで上書きするかどうか。
初期化後のプロパティの管理
グローバル・プロパティの設定
アプリの実行中に任意の時点でグローバル・プロパティを追加または更新します。
// Set a global property after initialization
bool result = SingularSDK.SetGlobalProperty("player_level", "5", true);
if (result)
{
Debug.Log("Property set successfully");
}
else
{
Debug.LogError("Failed to set property - may have reached 5 property limit");
}
メソッドのシグネチャ:
public static bool SetGlobalProperty(string key, string value, bool overrideExisting)
戻り値:プロパティが正常に設定された場合はtrue 、そうでない場合はfalse
重要
-
重要: 5 つのプロパティが既に存在し、新しいプロパティを追加しようとすると、このメソッドは
falseを返します。 -
overrideExistingパラメータは、既存のプロパティ値を置換するかどうかを決定します。 - 戻り値をチェックして、プロパティが正常に設定されたことを確認します。
グローバル・プロパティの取得
現在設定されているすべてのグローバル・プロパティとその値を Dictionary として取得します。
// Retrieve all global properties
Dictionary<string, string> properties = SingularSDK.GetGlobalProperties();
// Iterate through properties
foreach (KeyValuePair<string, string> property in properties)
{
Debug.Log($"Property: {property.Key} = {property.Value}");
}
メソッドのシグニチャ:
public static Dictionary<string, string> GetGlobalProperties()
戻り値:すべてのグローバル・プロパティのキーと値のペアを含む Dictionary。
グローバル・プロパティのアンセット
特定のグローバル・プロパティをそのキーによって削除します。
// Remove a specific global property
SingularSDK.UnsetGlobalProperty("player_level");
メソッドのシグニチャ:
public static void UnsetGlobalProperty(string key)
パラメータ:
- キー:削除するプロパティの名前。
すべてのグローバル・プロパティの削除
すべてのグローバル・プロパティを一度に削除する。
// Remove all global properties
SingularSDK.ClearGlobalProperties();
メソッドのシグネチャ:
public static void ClearGlobalProperties()
ベストプラクティス:ユーザがログアウトしたときや、すべてのカスタムトラッキングプロパティをデフォルト状態にリセットする必要があるときに、ClearGlobalProperties()。
実装例
完全な使用パターン
アプリケーションのライフサイクルを通じて、アプリレベルとユーザー固有のプロパティを追跡する。
using UnityEngine;
using Singular;
public class GlobalPropertiesManager : MonoBehaviour
{
void Awake()
{
// Set app-level global properties before initialization
SingularSDK.SetGlobalProperty("app_version", Application.version, true);
// Initialize SDK
SingularSDK.InitializeSingularSDK();
}
// Set third-party identifier on login
public void OnUserLogin(string thirdPartyUserId)
{
bool success = SingularSDK.SetGlobalProperty("third_party_identifier", thirdPartyUserId, true);
if (success)
{
Debug.Log("Third-party identifier set");
}
}
// Clear third-party identifier on logout
public void OnUserLogout()
{
SingularSDK.UnsetGlobalProperty("third_party_identifier");
Debug.Log("Third-party identifier cleared");
}
}
ベストプラクティスサードパーティのアナリティクス識別子(例:Mixpanel distinct_id、Amplitude user_id)をSingularのグローバルプロパティに同期して、統一されたクロスプラットフォームトラッキングを行う。ログイン時にユーザー固有の識別子を設定し、ログアウト時にUnsetGlobalProperty() でクリアします。app_version のようなアプリレベルのプロパティは、セッションを超えて持続します。
プロパティの上限管理:最大5つのグローバルプロパティで、アナリティクスのために最も価値のあるトラッキングディメンションを優先します。上限に達したら、新しいプロパティを追加する前に、それほど重要でないプロパティを削除することを検討してください。上記の例では、5プロパティの制限をどのように優雅に扱うかを示しています。