快速入门:设置广告投放位置
奖励式广告是一种激励玩家观看视频广告以换取奖励的方式。每个广告及其关联的奖励被视为一个广告投放位置。在本快速入门中,你将设置一个广告投放位置并为其配置奖励。
先决条件
一个 PlayFab 开发者帐户 。
来自你的广告提供程序的 Application ID 和 Advertising Unit 类型。
设置广告投放位置
在 Rewarded Ads 选项卡中,你首先看到的是广告的主仪表板。你将在此找到广告的基本 KPI,以及显示你最近广告事件的图表(它们也会显示在 PlayStream 中)。在顶部,选择 Placements 。
广告投放位置是系统中最基本的部分。将单个投放位置视为“广告位置”:将显示的广告类型(横幅、视频等)以及玩家在游戏中的哪个时间点看到(关卡插页广告、点击“显示广告”后等)。
在右上角,选择 New Ad Placement 。为你的投放位置起任何名字,并输入来自你的广告提供程序的 Application ID 和 Advertising Unit 类型。如果你不确定在何处找到特定提供程序的 Application ID 和 Advertising Unit 类型,请告诉我们,我们可以与你合作识别它们。
添加奖励
现在你需要添加你的具体奖励。对于此投放位置的每种可能的奖励,选择 New Reward 。为你的奖励起一个名字并输入你希望在授予特定奖励时返回给客户端的任何描述文本和资产包 URL。然后,在 Actions 下,选择 Add Action 。就像你可以对常规 PlayStream 操作所做的那样,你现在可以采取许多不同的操作——运行 Cloud Script 处理程序、授予物品等。通常,你在此处会授予虚拟货币或物品,但如果你想使用其他操作类型,都会按普通 PlayStream 操作触发器的相同方式处理。
在定义了几个奖励后,为每个奖励设置权重以设定随机分配。如果你为你的游戏定义了分组 ,你还可以在 Rewards 下的 Segment Assignment 工具中设置覆盖。例如,如果你有某组玩家你希望他们始终获得特定奖励,请在分配列表中将该分组设置为该奖励。分组分配按优先级顺序,因此对当前玩家匹配的第一个分组即被使用。以下示例定义了一个广告投放位置,0% 的时候提供免费宝石,30% 的时候提供额外经验值,70% 的时候提供“钥匙”物品。
在示例中,我们使用 Segment Assignment 按优先级顺序提供奖励。如果玩家在“High XP Players”组中,进行正常的随机选择。但如果玩家在“VIP players”分组中,我们授予该玩家“gems”奖励。
考虑为首次观看广告的玩家创建一个分组,并授予他们一个更受欢迎的奖励。这有助于激励玩家继续与奖励式广告互动,并总体上提高留存率。
最后,你可以选择限制玩家因广告获得奖励的次数。在我们的示例中,我们将其限制为每位玩家每天 4 次(此计数器的每日重置发生在 00:00 UTC)。你可以将限制设置为每天、每小时或每两小时重置一次。
检索广告投放位置
在定义了至少一个广告投放位置后,你可以使用 Client/GetAdPlacements 查询可用投放位置列表。在调用中指定 Identifier,以确保你只获取给定投放位置的信息。要筛选特定投放位置,你可以使用你为其定义的名称(如上所述),或该投放位置的 PlayFab 生成的唯一标识符(你可以在上面示例中的 URL 中看到)。否则,将返回该玩家具有有效奖励的所有可用投放位置,包括对该玩家的奖励、当前剩余的观看次数以及重置观看限制的时间,以 AdPlacementDetails 对象形式返回。
当你在客户端代码中选择了某个广告投放位置时,请确保保存 PlacementId 和 RewardId。你将在接下来的两个阶段中使用它们。
报告广告活动
我们为广告定义了四种活动状态——“Opened”、“Closed”、“Start”和“End”。当你使用奖励式广告时,请确保每次广告 SDK 报告状态变化时都调用 Client/ReportAdActivityRequest 以更新活动状态。
为广告活动发放奖励
当你的广告 SDK 报告广告观看已成功完成时,调用 Client/RewardAdActivity 以触发奖励。此调用需要 Client/GetAdPlacements 返回的 PlacementId 和 RewardId。它首先检查奖励是否有效,然后为玩家处理奖励。物品立即被授予,然后该调用返回由 Grant Item、Grant Virtual Currency 和 Increment Player Statistic 操作对玩家所做的完整变更集。
最后,重要的是要注意,reward ID 不会作为 GetAdPlacements 调用的一部分绑定到玩家。根据你提供的权重,多次调用 GetAdPlacements 可能会导致奖励发生变化。对 RewardAdActivity 的调用只要求该奖励对玩家有效,而不要求它是从 GetAdPlacements 最后返回的那个。