Skip to content

Monetization requirements

Monetization runs through FRVR’s modules. Channels that disallow it report ads / IAP as unsupported.

  • SHOULD show ads through FRVR.ads.
  • SHOULD offer purchases through FRVR.iap.
  • MUST NOT bundle a third‑party ad SDK (AdSense, AdMob, IronSource, AppLovin, Unity Ads, etc.). If FRVR doesn’t support a provider you need, ask FRVR to add it.
  • MUST NOT ship a third‑party payment SDK or webview redirect (Stripe, PayPal, native billing called directly).
  • MUST NOT call out to off‑platform monetization from the canvas (affiliate links, “buy on our site”, tip jars).
  • MUST NOT show “Watch ad” / “Buy” buttons when the capability isn’t available. Use FRVR.ads.isReady(type), FRVR.ads.isSupported(type), FRVR.iap.isReady(). Hide the entry point; don’t show a disabled button. Reviewers treat disabled buttons as broken features.
  • MUST NOT retry ad or IAP calls in a tight loop.
  • The reward MUST only be granted on AdShowResult.COMPLETED.
  • MUST NOT offer rewards that materially change game balance (energy refills are fine; permanent stat upgrades are not).
  • MUST drive titles, descriptions, and prices from FRVR.iap.getCatalog(). Hard‑coded prices cause refund disputes.
  • MUST support restoring purchases on fresh install / new device. See Recovering from crashes.
  • MUST persist consumable balances in FRVR.cloudStorage.
  • MUST NOT ship IAP without cloud storage. If FRVR.cloudStorage isn’t available on the channel, don’t enable IAP.