Key-value store

The key-value store provides a simple persistence layer for the players.

CloudService.GameServices.KvStoreService

The player needs need to be logged in to use the key-value store.

This class provides the methods to set, get and unset key-value pairs. This is executed within the context of the currently logged in player.

Example

using Coherence.Cloud;
using Coherence.Toolkit;
using System.Collections;
using UnityEngine;
using Result = Coherence.Runtime.Result;

public class KeyValueStoreExample : MonoBehaviour
{
    public CoherenceBridge bridge;

    public string username;
    public string password;
    public string myKey;
    public string myValue;

    private CloudService cloudService;

    void Start()
    {
        cloudService = bridge.CloudService;

        StartCoroutine(LoginAsAUserAndUseKvStore());
    }

    private IEnumerator LoginAsAUserAndUseKvStore()
    {
        IAuthClient authService = cloudService.GameServices.AuthService;

        while (!cloudService.IsConnectedToCloud && authService.SessionTokenRefreshResult == null)
        {
            yield return null;
        }

        // If refresh failed, we have to login as a user with the given credentials again
        if (authService.SessionTokenRefreshResult == Result.InvalidCredentials)
        {
            var task = authService.LoginWithPassword(username, password, true);

            while (!task.IsCompleted)
            {
                yield return null;
            }
        }

        // At this point, we are ready to fully utilize the Cloud Service
        KvStoreClient keyValueStore = cloudService.GameServices.KvStoreService;

        // Sets a value
        // key: lowercase letters, numbers, underscore, dash
        // val: any string (null is not allowed)
        keyValueStore.Set(myKey, myValue);

        // Gets a value
        // key: lowercase letters, numbers, underscore, dash
        var foo = keyValueStore.Get(myKey);
        Debug.Log(string.Format("foo={0}", foo)); // foo=1

        // Unsets a value, removing it from the store
        // key: lowercase letters, numbers, underscore, dash
        keyValueStore.Unset(myKey);
    }
}

Limitations

Size: there are no limits to the number of stored key/values as long as the total size is less than 256 kB.

Requests: Set/Get/Unset can be called unlimited amount of times but the execution may be throttled.