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
  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' },
};

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.