The key-value store provides a simple persistence layer for the players.
his feature has been superseded by cloud storage.
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.