连接和使用
连接
注意
连接 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 是否正确连接:
-
使用debug面板启动游戏:
通过开发者控制台通过地址栏- 打开 Yandex游戏控制台。
- 选择所需的游戏。
- 在左上角点击 Open with debug panel。
-
打开所需的游戏。
-
在浏览器地址栏末尾添加
&debug-mode=16。链接示例:
https://yandex.com/games/app/XXXX?debug-mode=16,其中XXXX— 游戏的唯一标识符。
-
在左下角检查加载器指示器的值:
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 方面的问题或有其他问题想要咨询,请联系支持部门: