连接和使用

连接

注意

为了让您的游戏成功通过审核,请指定连接 Yandex Games SDK 的当前路径:

连接 Yandex Games SDK 有两种等效的方式:

  • 通过 <script> 标签。
  • 动态加载 — 它允许以编程方式控制连接过程并处理加载事件。

Yandex 服务器

备注

在开发时,使用本地服务器代理 /sdk.js。无需下载 sdk.js 文件。

在 HTML 页面的 <head> 标题中添加以下行:

1<!-- Yandex Games SDK -->
2<script src="/sdk.js"></script>

使用以下属性:

  • async — 用于非阻塞加载。
  • onload — 用于在脚本加载后执行代码。

在脚本加载后启动 initSDK 的代码示例。initSDK 指的是 SDK 初始化

1<!-- Yandex Games SDK -->
2<script async src="/sdk.js" onload="initSDK()"></script>

在您的 <script> 标签或 JSON 文件中添加以下代码片段:

1const script = document.createElement('script');
2script.src = '/sdk.js';
3script.async = true;
4script.onload = initSDK;
5document.body.append(script);

在此示例中,initSDK 指的是脚本加载后的 SDK 初始化

自己的域名

在自己的域名上托管游戏时,使用绝对路径 https://sdk.games.s3.yandex.net/sdk.js 而不是相对路径 /sdk.js

1<!-- Yandex Games SDK -->
2<script src="https://sdk.games.s3.yandex.net/sdk.js"></script>

使用

脚本加载后,使用 YaGames 对象的 init() 方法初始化 SDK。

提示

YaGames.init()ysdk.getPayments() 中可以传递可选参数 signed: boolean,该参数用于防作弊保护。参数值的选择取决于支付处理的位置:

  • 如果在客户端处理 — 调用方法时不传递 signed: boolean 参数或传递 signed: false。购买方法将返回明文数据。
  • 如果在服务器端处理 — 传递 signed: true。在这种情况下,payments.getPurchases()payments.purchase() 方法响应中的所有数据仅以加密形式在 signature 参数中返回。

使用默认参数初始化(signed: false):

const ysdk = await YaGames.init();

使用 signed: true 参数初始化:

const ysdk = await YaGames.init({ signed: true });

 

验证

重要

在执行 YaGames.init() 之前必须连接 /sdk.js 脚本。

使用加载器检查 SDK 是否正确连接:

  1. 使用debug面板启动游戏:

    1. 打开 Yandex游戏控制台
    2. 选择所需的游戏。
    3. 在左上角点击 Open with debug panel
    1. 打开所需的游戏。

    2. 在浏览器地址栏末尾添加 &debug-mode=16

      链接示例:https://yandex.com/games/app/XXXX?debug-mode=16,其中 XXXX — 游戏的唯一标识符。

  2. 在左下角检查加载器指示器的值:

  • W — 等待初始化。
  • IT — SDK 加载器已正确初始化。
  • IF — 使用的是旧版加载器。请按照文档加载 SDK。

问题解决

Uncaught ReferenceError: YaGames is not defined

请注意 sdk 脚本的连接顺序:必须在执行 YaGames.init() 之前连接。

Uncaught ReferenceError: ysdk is not defined

您尝试在 SDK 初始化之前使用 SDK 方法(广告、购买等)。可以在调试模式下通过控制台中的 Initialized 消息跟踪初始化时刻。要控制调用顺序,请在调用方法之前添加 SDK 初始化:

1const ysdk = await YaGames.init();
2
3ysdk.adv.showFullscreenAdv();

SDK 连接示例

1<!-- Yandex Games SDK -->
2<script async src="/sdk.js" onload="initSDK()"></script>
3<script>
4    async function initSDK() {
5        const ysdk = await YaGames.init();
6        ...
7    }
8</script>

备注

技术支持团队将协助您将已完成的游戏发布到 Yandex 游戏平台。关于开发和测试方面的具体问题,其他开发人员将在Discord 频道中进行回答。

如果您遇到 Yandex Games SDK 方面的问题或有其他问题想要咨询,请联系支持部门:

写入聊天信息
上一篇
下一篇