跳转到内容

Web 快速上手

纯 HTML5 游戏(PixiJS、Phaser、纯 Canvas、WebGL)接入方式:在 HTML 里放两个 <script>,然后从游戏里调用 window.FRVR.*

1. 加载 SDK —— 本地开发用 dev 渠道

Section titled “1. 加载 SDK —— 本地开发用 dev 渠道”

两个 <script> 标签都加到 HTML 的 <head> 里。不要asyncdefer —— SDK 必须在你任何游戏脚本之前就绪。请从 FRVR CDN 加载(不要自行托管):

<head>
  <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>
  <!-- …你的脚本都在这之后 -->
</head>

dev 渠道包自带假的广告、内购、存储 provider,让你无需真实后端就能体验完整流程。

FRVR.lifecycle.* 回调是必填。SDK 在广告弹出(或渠道要求)时会调用它们,让你的游戏暂停主循环和音频。不接就是上线 bug —— 广告会盖着音乐响,游戏主循环会在插屏下继续跑。

<script>
  FRVR.config = {
    gameId: 'my-awesome-game',
  };

  // 【必填】—— 五个都要实现。即便某个回调在你游戏里是 no-op,
  // 也显式写出来,提醒自己以后回头处理。
  FRVR.lifecycle.onSuspend      = () => game.pauseLoop();
  FRVR.lifecycle.onResume       = () => game.resumeLoop();
  FRVR.lifecycle.onAudioSuspend = () => audio.mute();
  FRVR.lifecycle.onAudioResume  = () => audio.unmute();
  FRVR.lifecycle.onGamePause    = () => game.showPauseMenu();

  FRVR.init();
</script>

FRVR.init() 会装配全部模块(FRVR.adsFRVR.trackerFRVR.iap 等),此时尚未发起任何网络请求。

引导器会在你加载期间显示渠道风格的启动画面:

<script>
  FRVR.bootstrapper.init()
    .then(() => loadGame(progress => FRVR.bootstrapper.setProgress(progress)))
    .then(() => FRVR.bootstrapper.complete());

  function loadGame(onProgress) {
    // …下载资源、预热音频等。期间多次调用 onProgress(0..1)。
    onProgress(1);
    return Promise.resolve();
  }
</script>

这就是一个完整的本地集成。之后按需调用任何模块(FRVR.adsFRVR.iapFRVR.tracker 等) —— 每个都有自己的页面和侧边栏里的在线 demo。

下面这个 demo 通过 dev 渠道加载真实 SDK 并调用 FRVR.tracker

在线示例:init 并上报一个事件

loading SDK…
 
<!DOCTYPE html>
<html>
  <head>
    <title>My Game</title>
    <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>
  </head>
  <body>
    <canvas id="game"></canvas>

    <script>
      FRVR.config = { gameId: 'my-awesome-game' };

      // 必填生命周期回调
      FRVR.lifecycle.onSuspend      = () => pauseLoop();
      FRVR.lifecycle.onResume       = () => resumeLoop();
      FRVR.lifecycle.onAudioSuspend = () => muteAudio();
      FRVR.lifecycle.onAudioResume  = () => unmuteAudio();
      FRVR.lifecycle.onGamePause    = () => showPauseMenu();

      FRVR.init();

      FRVR.bootstrapper.init()
        .then(() => loadGame(p => FRVR.bootstrapper.setProgress(p)))
        .then(() => FRVR.bootstrapper.complete());
    </script>
  </body>
</html>

下一步:接入 广告内购数据分析。准备发版时联系你的 FRVR 对接人 —— FRVR 负责生产构建矩阵和渠道注入。