Skip to content

Configuration

FRVR.config is a plain object you set before FRVR.init(). Only gameId is strictly required; every other key is module‑specific and optional.

FRVR.config = {
  gameId:   string,          // REQUIRED. Your FRVR game identifier.

  ads?:     AdsConfiguration,
  iap?:     IAPProviderConfig,
  auth?:    AuthProviderConfig,
  tracker?: TrackerConfig,
  consent?: ConsentProviderConfig,

  storage?:     StorageConfiguration,
  cloudStorage?: CloudStorageConfiguration,

  social?:     SocialConfig,
  navigation?: NavigationConfig,

  crossplay?: CrossplayConfiguration,
  channels?:  Record<string, unknown>,   // per‑channel overrides
  host?:      HostConfig,                // native app builds: titlebar, FRVR login
  shield?:    { xmlPath: string, cssPath: string },  // Facebook Instant only
};

Your game’s identifier on FRVR. It’s used by analytics, leaderboards, tournaments, shop, features, notifications — almost everything. Set it once at the top level; any module that wants its own override can set a gameId inside its own config.

FRVR.config.gameId = 'basketball';

See Analytics. Typical shape:

FRVR.config.tracker = {
  appVersion: '1.2.3',
  appBuild:   '4567',
  analyticsProviders: {
    metapixel: { pixelId: 'PIXEL_ID' },
  },
};

See Ads. Most channels auto‑configure providers; you rarely need more than:

FRVR.config.ads = {
  autoInit: true,
  throttling: { [FRVR.ads.AdType.INTERSTITIAL]: { minInterval: 60 } },
};

See IAP. You always need a catalog:

FRVR.config.iap = {
  catalog: {
    COINS_100: { label: '100 coins', storeId: 'com.mygame.coins_100' },
    COINS_500: { label: '500 coins', storeId: 'com.mygame.coins_500' },
  },
};

See Auth. For most games an empty object is enough — the active channel picks the right provider:

FRVR.config.auth = {};

See Consent. On web you typically pick a CMP:

FRVR.config.consent = {
  providerName: 'tcfv2',   // or 'cookiepro'
  config: {},
};

See Cloud storage:

FRVR.config.cloudStorage = {
  playerStorage: { env: 'production' },
};

Options for hosts that draw UI around the game and own the login, which today means FRVR’s native app builds. See Host UI.

FRVR.config.host = {
  titlebar: false,   // hide the host's titlebar before the game shows
};
KeyPurpose
titlebarfalse hides the host’s titlebar. Default: the build’s setting.
authfalse makes the game ignore the host’s FRVR session and keep its own.
storageSandboxFRVR.localStorage is kept per player while the host shares its session. false shares it between players. An object with globalKeys / globalKeyPrefixes lists keys to share.

Setting FRVR.config.iap = { enabled: false } turns purchases off for a build: FRVR.iap.isReady() then stays false.

Some channels accept their own config nested under channels:

FRVR.config.channels = {
  'facebook-instant': { /* … */ },
  'google-play':      { /* … */ },
};

See the channels reference for which keys are read.

Always between loading the SDK bundle and calling FRVR.init(). Use the dev channel locally; FRVR injects the production channel bundle for you per release:

<script src="https://cdn.frvr.com/sdk/frvr-sdk.min.js"></script>
<script src="https://cdn.frvr.com/sdk/frvr-channel-dev.min.js"></script>
<script>
  FRVR.config = { gameId: 'my-game', /* … */ };
  FRVR.init();
</script>

Setting FRVR.config after init() has no effect.