Varioqub Unity integration

Varioqub Unity is a plugin for the Unity3D platform. It includes the Varioqub SDK support for Android and iOS.

System requirements:

To use the Varioqub Unity plugin, add and initialize the AppMetrica Unity plugin. For more information on how to do this, see the AppMetrica Unity documentation.

Follow this step-by-step guide to enable and initialize Varioqub Unity.

General integration recommendations

  1. When starting a new session, call the ActivateConfig() method to retrieve the stored flag values.

  2. Run Fetch() in the background to export the new flag values from the server and activate them when the next session starts.

  3. We don't recommend calling the ActivateConfig() method mid-session because it can cause inconsistent app behavior.

Step 1. Enable the Varioqub Unity plugin

Add the following dependencies to Packages/manifest.json:

{
  "scopedRegistries": [
    {
      "name": "package.openupm.com",
      "url": "https://package.openupm.com",
      "scopes": [
        "com.google.external-dependency-manager",
        "com.yandex.varioqub"
      ]
    }
  ],
  "dependencies": {
    "com.google.external-dependency-manager": "1.2.183",
    "com.yandex.varioqub": "0.1.0"
  }
}
  1. Follow the documentation to enable External Dependency Manager.

  2. Add the Varioqub Unity plugin to the dependencies in Packages/manifest.json:

{
  "dependencies": {
    "com.yandex.varioqub": "https://github.com/appmetrica/varioqub-unity-plugin.git#v0.1.0"
  }
}

Step 2. Initialize the library

Initialize the Varioqub library using the initVarioqubWithAppMetricaAdapter() method:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Com.Yandex.Varioqub;

public class VarioqubSDK : MonoBehaviour {
    IEnumerator RepeatFetch() {
        while (true) {
            Varioqub.Fetch(
                onSuccessDelegate: () => {
                    Debug.Log("Fetch successed!");
                },
                onErrorDelegate: error => {
                    Debug.Log($"Error: {error}!");
                }
            );
            yield return new WaitForSeconds(10f);
        }
    }

    void Awake() {
        var settings = new VarioqubSettings("appmetrica.1234567");
        settings.Logs = true;
        settings.ThrottleInterval = 2;
        settings.ClientFeatures = new Dictionary<string, string>(){
            {"isNight", "true"}
        };

        Varioqub.InitVarioqubWithAppMetricaAdapter(settings);
        Varioqub.ActivateConfig();

        StartCoroutine(RepeatFetch());
    }
}

To initialize the library, use the initVarioqubWithAppMetricaAdapter(VarioqubSettings settings) method. It takes a VarioqubSettings object as a parameter.

Contains required and optional settings.

Required

  • clientID: Project ID specified as appmetrica.XXXXXX, where XXXXXX is the app ID from the AppMetrica interface. For example, VarioqubSettings("appmetrica.1234567").

    Tip

    You can get the application ID from the AppMetrica Settings page: copy it in General settingsApplication ID.

Optional

  • ClientFeatures: List of custom parameters. For example, you can pass a flag indicating if the user is subscribed to newsletters.

  • ThrottleInterval: Interval between config updates, in seconds. This is only recommended for testing purposes.

  • URL: Changes the URL for server responses. Only used for testing.

  • Logs: Enables internal logging. To help us diagnose your problem, please enable logging and attach the log file with a description of the problem when submitting your support request.

  • activateEvent: Sends an event when the flag configuration is activated. Event sending is enabled by default.

Step 3. Set the default configuration

You can set up a default configuration to have your app use your preferred parameter values before it connects to a remotely configured server. To do that, send the list of parameters using the SetDefaults(IDictionary<string, object> defaults) method.

You can download the XML default configuration file from the Flag configuration page.

Step 4. Run a background update of the flag configuration and activate it

To use the most recent flag configuration from the interface, run a background configuration update using the Fetch() method.

Varioqub.Fetch(
    onSuccessDelegate: () => {
        Debug.Log("Fetch successed!");
    },
    onErrorDelegate: error => {
        Debug.Log($"Error: {error}!");
    }
);

Each time you receive the latest version of the configuration (most often this occurs when starting a new session), you need to activate it using the ActivateConfig() method.

Tip

Main use case:

Regularly download the configuration and activate it when the app is launched. That guarantees your flags won't change during user sessions. We recommend launching activation as soon as possible.

Varioqub.ActivateConfig();

Getting flags from the interface

Flag values are retrieved and returned in the following order:

  1. Flag is present in the experiment.
  2. Flag is present in the loaded configuration.
  3. Flag is present in the default configuration.

Flag getters:

  • Varioqub.GetString(key, default).

Code example:

Varioqub.GetString("key", "default_value");

Obtaining the device ID to test the experiment

To get the device ID, use the Varioqub.GetId() method:

Varioqub.GetId();

Note

Before the first successful Fetch() call, the Varioqub.GetId() method may return empty responses.

To learn more about creating and testing experiments, see Creating an experiment.