激励广告
激励广告是一种受欢迎的全屏广告格式,用户观看广告后会获得奖励。
这种广告类型的显示由用户激活,例如,为了在游戏中获得奖励或额外生命。
高度的用户积极性使得这种广告格式成为免费应用中最受欢迎和最具盈利性的广告格式。
展示效果
本指南介绍如何在 Compose Multiplatform 应用中集成激励广告。除代码示例外,还包含格式相关建议与更多资源链接。
前提条件
- 请按快速入门完成 Yandex Mobile Ads Compose Multiplatform 插件集成。
- 请使用最新的 Yandex Mobile Ads Compose Multiplatform 插件版本。若使用聚合,请同时使用最新的统一构建版本。
实现
集成激励广告的关键步骤:
- 在 Composable 作用域内获取
rememberRewardedAdLoader()。 - 在协程中通过
loadAd(AdRequest)加载RewardedAd。 - 在已加载广告上设置
RewardedAdEventListener,在onRewarded中发放奖励。 - 用户同意观看广告后调用
show()。
激励广告集成注意事项
如果加载抛出异常或在错误处理中失败,请勿立即再次加载新广告。如确有必要,请限制重试次数。
加载广告
使用 rememberRewardedAdLoader() 与 loadAd,并传入包含 Yandex Advertising Network 界面中 adUnitId 的 AdRequest。
可通过 AdRequest 扩展请求。详见 广告定向。
加载激励广告示例:
@Composable
fun RewardedBlock(adUnitId: String) {
val loader = rememberRewardedAdLoader()
val scope = rememberCoroutineScope()
var rewardedAd by remember { mutableStateOf<RewardedAd?>(null) }
var isLoading by remember { mutableStateOf(false) }
Button(
onClick = {
isLoading = true
scope.launch {
try {
rewardedAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
} catch (e: Exception) {
// Ad failed to load with AdRequestError.
// Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
}
isLoading = false
}
},
enabled = !isLoading,
) {
Text(if (isLoading) "加载中..." else "加载激励广告")
}
Button(
onClick = {
rewardedAd?.show()
rewardedAd = null
},
enabled = rewardedAd != null,
) {
Text("展示激励广告")
}
}
调试时可将 adUnitId 设为 'demo-rewarded-yandex'。
展示广告
激励广告会在用户观看后给予奖励(如额外生命或进入下一关),奖励形式由应用自行定义。
要跟踪生命周期并发放奖励,请在调用 show() 前在 RewardedAd 上设置 RewardedAdEventListener。
val ad = rewardedAd ?: return
ad.setAdEventListener(
object : RewardedAdEventListener {
override fun onAdShown() {
// Called when an ad is shown.
}
override fun onAdFailedToShow(adError: AdError) {
// Called when an ad failed to show.
}
override fun onAdDismissed() {
// Called when ad is dismissed. Preload the next rewarded ad if appropriate.
}
override fun onAdClicked() {
// Called when a click is recorded for an ad.
}
override fun onAdImpression(impressionData: ImpressionData?) {
// Called when an impression is recorded for an ad.
}
override fun onRewarded(reward: Reward) {
// Grant currency: reward.type, reward.amount
}
},
)
ad.show()
释放资源
在 onAdDismissed 或 onAdFailedToShow 之后释放引用,必要时加载下一条素材。
测试激励广告集成
使用演示广告单元进行广告测试
我们建议使用测试广告来测试您的激励广告集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-rewarded-yandex。
重要
在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。
您可以在 用于测试的演示广告单元 版块找到可用的演示广告版位 ID 列表。
测试广告集成
您可以使用 SDK 的内置分析器来测试激励广告集成。
该工具检查可确保您的激励广告正确集成,并向日志输出详细报告。 要查看报告,请在用于 Android 应用调试的 Logcat 工具中搜索“YandexAds”关键字。
adb logcat -v brief '*:S YandexAds'
如果集成成功,您将看到以下消息:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type rewarded was integrated successfully
如果您在集成激励广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。
使用演示广告单元测试
我们建议使用测试广告来测试您的广告集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-rewarded-yandex。
重要
在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。
您可以在 用于测试的演示广告单元 版块找到可用的演示广告版位 ID 列表。
验证广告集成
您可以使用本机控制台工具测试广告集成。
要查看详细日志,请调用 YMAMobileAds 类的 enableLogging 方法。
YMAMobileAds.enableLogging()
要查看 SDK 日志,请前往控制台工具并设置 Subsystem = com.mobile.ads.ads.sdk。您还可以按类别和错误级别过滤日志。
如果您在集成广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。
提示
预加载广告
加载广告可能需要几秒钟的时间,具体取决于移动聚合中对接的广告网络数量和用户的互联网速度。我们建议在展示广告之前预加载广告。
提前调用 loadAd,并在 onAdDismissed 时开始加载下一条。
如果您在太多不太可能显示的屏幕上缓存广告,您的广告效果可能会下降。例如,如果用户每次会话完成 2-3 个游戏关卡,则您不应缓存 6-7 个屏幕的广告。否则,您的广告可见性可能会降低,并且广告系统可能会降低您的应用的优先级。
为确保您为应用程序找到良好的平衡,请在 Yandex Advertising Network 界面中跟踪“收视数比例”或“可见收视数比例”指标。如果它低于 20%,可能需要修改您的缓存算法。收视数比例越高越好。
更多资源
-
GitHub 链接。