Channels reference
A channel is the platform you’re distributing on — Facebook Instant, Google Play, iOS, the open web, Samsung Instant Play, etc. Each channel has its own backend for ads, billing, auth, etc., and FRVR SDK hides those differences behind one API.
Channels FRVR supports today
Section titled “Channels FRVR supports today”| Channel | Distribution target | Notes |
|---|---|---|
web | Open web, embed partners (portals) | Most games ship this for web/mobile‑web. |
facebook-instant | Facebook Instant Games | Enables Shield overlays, Facebook friends, native IAP. |
facebook-rooms | Facebook Rooms (video‑calls) | Extends Instant with room‑context features. |
google-play | Google Play (TWA / hybrid wrapper) | Play Billing, Play Games, Play achievements. |
ios | iOS native app (WebKit bridge) | Apple IAP, Game Center, StoreKit. |
samsung-galaxy | Samsung Galaxy Store | Samsung Account, Galaxy IAP. |
samsung-instant-play | Samsung Instant Play (cloud) | Session length‑aware, no device storage. |
xiaomi | Xiaomi QuickGame | Xiaomi account, Mi Pay. |
dev | Local development only | Stubs providers so demos and tests run without a live host. FRVR never ships this to production. |
Feature matrix
Section titled “Feature matrix”Not every module works on every channel. Use the runtime check shown on each row before showing feature UI — the channel bundle FRVR injects for a given platform will simply report “no” for unsupported features, so guarding your UI with these checks keeps your code portable.
| Module | Support check | Web | FB Instant | iOS | Google Play | Samsung |
|---|---|---|---|---|---|---|
| Ads | FRVR.ads.isSupported(AdType.INTERSTITIAL) · FRVR.ads.isReady(type) | ✓ | ✓ | ✓ | ✓ | ✓ |
| IAP | FRVR.iap.isReady() — also FRVR.iap.onReady(cb) | — | ✓ | ✓ | ✓ | ✓ |
| Auth (FRVR) | FRVR.auth.isPlatformAvailable('FRVR') · FRVR.auth.isLoggedIn() | ✓ | ✓ | ✓ | ✓ | ✓ |
| Social (friends) | FRVR.social.platform.getSupportedAPIs().length > 0 | ✓ | ✓ | ✓ | ✓ | — |
| Leaderboards | FRVR.leaderboards.isSupported() | ✓ | ✓ | ✓ | ✓ | ✓ |
| Tournaments | FRVR.tournaments.platform.isSupported() | ✓ | ✓ | — | — | — |
| Challenges | (await FRVR.challenges.getPossibleOpponents()).length > 0 | ✓ | ✓ | — | — | — |
| Notifications | await FRVR.notifications.canScheduleMessages() | — | ✓ | ✓ | ✓ | — |
| Shortcut | await FRVR.shortcut.canCreateShortcut() | ✓ | — | — | — | — |
| Crossplay | await FRVR.crossplay.canMoveToMobile() | ✓ | ✓ | — | — | — |
| Navigation | FRVR.navigation.canNavigate() · FRVR.navigation.canOpenChannelAppStore() | ✓ | ✓ | ✓ | ✓ | ✓ |
| Score (native) | typeof FRVR.score !== 'undefined' | — | — | ✓ | ✓ | — |
| Shield overlays | (await FRVR.shield.createOverlay(…)) !== null | — | ✓ | — | — | — |
| Community CTAs | await FRVR.community.canFollowOfficialPage() · await FRVR.community.canJoinOfficialGroup() | — | ✓ | — | — | — |
Treat the ticks above as a starting point — channel capabilities change as platforms update. The runtime isSupported / can… checks are always authoritative.
Per‑channel config
Section titled “Per‑channel config”Some channels accept channel‑specific keys under FRVR.config.channels:
Only keys for the channel currently in use are read. You can ship the same FRVR.config across every release — FRVR’s build pipeline determines which branch gets read when.