广告

您可以通过在游戏中放置广告块来获得收入。为此,您需要:

  1. 查看关于放置广告的提示和建议
  2. 使用 SDK 配置广告调用
  3. 在 Yandex Games 开发者控制台中启用货币化

关于放置广告的提示和建议

  • 合理放置广告,让用户注意到这是一个广告单元,而不是游戏的一部分。
  • 建议在用户操作后或通过计时器显示广告(如果通过关卡需要超过 5 分钟)。详见广告位置
  • 调用奖励视频的频率不受限制。
  • 调用插屏广告单元的频率由 Yandex Games 平台控制。

注意

当用户随机点击广告单元时,Yandex 广告网络会将其视为广告欺诈的迹象,从而减少游戏的广告收入。

为避免发生这种情况,请不要在用户积极与游戏互动时调用广告显示,因为这时用户可能会无意中点击广告块。

错误调用的示例:

setInterval(() => ysdk.adv.showFullscreenAdv(), 180000)

配置广告调用

插屏广告

插屏广告是指完全覆盖应用背景并在用户请求某些信息(例如进入下一游戏关卡)与获得该信息之间显示的广告单元。

要调用广告,请使用 ysdk.adv.showFullscreenAdv() 方法。

方法签名:

1function showFullscreenAdv(callbacks?: {
2    onOpen?: () => void;
3    onClose?: (wasShown: boolean) => void;
4    onError?: (error: object) => void;
5}) => void {}

callbacks 参数中可以传递可选的回调函数:

  • onOpen — 在成功打开广告时调用。
  • onClose — 在广告关闭、发生错误或广告因调用过于频繁而未能打开时调用。与 wasShown 参数(boolean 类型)一起使用,它的值表示是否显示广告。
  • onError — 在发生错误时调用。错误对象会传递给回调函数。

示例

 1const ysdk = await YaGames.init();
 2
 3ysdk.adv.showFullscreenAdv({
 4    callbacks: {
 5        onOpen: () => console.log('广告已打开。'),
 6        onClose: (wasShown) => console.log(wasShown ? '已显示并关闭。' : '未显示。'),
 7        onError: (error) => console.log('调用错误。'),
 8    }
 9})

奖励视频 (rewarded video)

奖励视频是用于游戏货币化的视频广告块,用户可通过观看获得奖励,例如游戏内货币。

要调用广告,请使用 ysdk.adv.showRewardedVideo() 方法。

方法签名:

1function showRewardedVideo(callbacks?: {
2    onOpen?: () => void;
3    onRewarded?: () => void;
4    onClose?: (wasShown: boolean) => void;
5    onError?: (error: object) => void;
6}) => void {}

callbacks 参数中可以传递可选的回调函数:

  • onOpen — 在屏幕上显示视频广告时调用。
  • onRewarded — 在计算视频广告展示次数时调用。在此函数中指定用户观看后将获得的奖励。
  • onClose — 在视频广告关闭时调用。
  • onError — 在发生错误时调用。错误对象会传递给回调函数。

示例

 1const ysdk = await YaGames.init();
 2
 3ysdk.adv.showRewardedVideo({
 4    callbacks: {
 5        onOpen: () => console.log('广告已打开。'),
 6        [onRewarded](onRewarded): () => console.log('用户已获得奖励。'),
 7        onClose: (wasShown) => console.log(wasShown ? '已显示并关闭。' : '未显示。'),
 8        onError: (error) => console.log('调用错误。'),
 9    }
10})

启用粘性横幅显示

粘性横幅是在游戏过程中显示的广告块。要启用粘性横幅显示:

  1. 打开开发者控制台并转到Advertising选项卡。
  2. Sticky banners块中配置横幅显示:
    • 对于移动设备:
      • Sticky banner in portrait orientation — 选择 At the bottomAt the top
      • Sticky banner in landscape orientation — 选择 At the bottomAt the topOn the right
    • 对于计算机 — 启用Sticky banner on the desktop选项。横幅将在右侧显示。

默认情况下,粘性横幅会在游戏启动时出现,并在整个会话期间显示。要使用 SDK 方法管理粘性横幅显示,请启用Use the API to display a sticky-banner选项。

ysdk.adv.getBannerAdvStatus()

获取粘性横幅的当前状态。

方法签名:

1function getBannerAdvStatus(): Promise<{
2    stickyAdvIsShowing: boolean;
3    reason?: 'ADV_IS_NOT_CONNECTED' | 'UNKNOWN';
4}> {}

返回粘性横幅显示状态 stickyAdvIsShowing。如果横幅未显示,还会返回可选字段 reason,指示横幅缺失的原因:

  • ADV_IS_NOT_CONNECTED — 横幅未连接。
  • UNKNOWN — Yandex 端显示广告时出错。

ysdk.adv.showBannerAdv()

显示粘性横幅。

方法签名:

1function showBannerAdv(): Promise<{
2    stickyAdvIsShowing: boolean;
3    reason?: 'ADV_IS_NOT_CONNECTED' | 'UNKNOWN';
4}>

返回值与 ysdk.adv.getBannerAdvStatus() 相同。

ysdk.adv.hideBannerAdv()

隐藏粘性横幅。

方法签名:

1function hideBannerAdv(): Promise<{
2    stickyAdvIsShowing: boolean;
3}>

返回粘性横幅显示状态 stickyAdvIsShowing

示例

 1const ysdk = await YaGames.init();
 2
 3const { stickyAdvIsShowing , reason } = await ysdk.adv.getBannerAdvStatus();
 4
 5if (stickyAdvIsShowing) {
 6    // 显示广告。
 7} else if (reason) {
 8    // 不显示广告。
 9    console.log(reason);
10} else {
11    ysdk.adv.showBannerAdv();
12}

备注

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

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

写入聊天信息

callbacks:可选的回调函数。将为每个广告单元单独配置。

onOpen:在屏幕上显示视频广告的时候调用。

onClose:在广告关闭、发生错误或广告因调用过于频繁而未能打开的时候调用。与 wasShown 参数(boolean 类型)一起使用,它的值表示是否显示广告。

onClose:在用户关闭视频广告的时候调用。

onError:在发生错误的时候调用。错误对象会传递给回调函数。

上一篇