插屏广告(SwiftUI)
插屏广告是一种全屏广告格式,嵌入在应用内容中,在自然暂停时显示,例如在游戏关卡之间过渡或完成目标操作时。
展示插屏广告时,用户可以选择点击广告前往广告主站点,或关闭广告返回应用。
插屏广告会占据用户全部注意力,因此 eCPM 通常更高。
外观
本指南介绍如何在 iOS 应用中使用 SwiftUI 集成插屏广告。除代码示例外,还包含格式使用建议及其他资源链接。
前提条件
- 请按照 快速入门 中描述的 SDK 集成步骤进行操作。
- 提前 初始化 您的广告 SDK。
- 确保您运行的是最新的 Yandex Mobile Ads SDK 版本。如果您使用聚合,请同时确保您运行的是最新版本的 统一构建。
实施
在 SwiftUI 中集成插屏广告的主要步骤:
- 在根(或合适)
View上附加.interstitialAd(isPresented:request:onEvent:)修饰符。 - 通过
Binding<AdRequest?>控制加载:非nil即开始加载。 - 通过
Binding<Bool>控制展示:true展示已加载的广告(若仍在加载,就绪后会自动展示)。 - 若通过 Adfox 投放,请传入其他设置(通过
AdRequest参数)。 - 在
onEvent闭包(InterstitialAdEvent)中处理生命周期。
插屏广告集成说明
-
强烈不建议在
.didFailToLoad后立即加载新广告。若必须在错误处理中重试,请限制次数,以免因网络限制导致连续失败请求。 -
请将修饰符挂在在整个展示流程中持续存在的视图上(例如某屏或导航根),以免丢失加载状态。
加载与展示广告
在 SwiftUI 中使用含广告位 ID 的 AdRequest,以及两个状态:可选的请求与展示标志。
在 onEvent 闭包中使用 InterstitialAdEvent 接收加载成功/失败、展示、关闭与错误等通知。
import SwiftUI
import YandexMobileAds
struct InterstitialView: View {
@State private var adRequest: AdRequest?
@State private var isPresented = false
var body: some View {
VStack {
Button("加载并展示") {
adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
}
}
.interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
switch event {
case .didLoad:
isPresented = true
case .didDismiss, .didFailToShow, .didFailToLoad:
adRequest = nil
default:
break
}
}
}
}
广告位 ID(adUnitId)在 Yandex Advertising Network 中获取。
可通过 AdRequest 初始化参数传入用户兴趣、页面上下文、位置等数据。请求中的上下文可提升广告质量。详见广告定向。
示例:先发起加载,就绪后再展示:
struct InterstitialView: View {
@State private var adRequest: AdRequest?
@State private var isPresented = false
func loadAd() {
adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
}
func showAd() {
isPresented = true
}
var body: some View {
VStack {
Button("加载", action: loadAd)
Button("展示", action: showAd)
}
.interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
if case .didLoad = event {
// 可调用 showAd() 或设置 isPresented = true
}
}
}
}
若在加载完成前设置 isPresented = true,加载成功后会自动展示。
展示广告
插屏广告宜在自然停顿点展示,例如关卡之间或完成目标操作后(如文件下载结束)。
加载成功后会收到 .didLoad — 将 isPresented = true 以展示广告(或提前设置展示标志,见上文)。
广告关闭、展示失败或加载失败后,isPresented 会重置为 false。
测试插屏广告集成
使用演示广告位测试
我们建议使用测试广告来测试您的广告集成和应用本身。
为了保证为每个广告请求返回测试广告,我们创建了一个特殊的演示广告版位 ID。用它来检查您的广告集成。
演示广告单元 ID:demo-interstitial-yandex。
重要
在商店中发布您的应用程序之前,确保将演示版位 ID 替换为您在 Yandex Advertising Network 界面中获得的真实 ID。
您可以在 用于测试的演示广告单元 部分找到可用的演示广告版位 ID 列表。
验证广告集成是否正确
您可以使用本机控制台工具测试广告集成。
要查看详细日志,请调用 YMAMobileAds 类的 enableLogging 方法。
YMAMobileAds.enableLogging()
要查看 SDK 日志,请前往控制台工具并设置 Subsystem = com.mobile.ads.ads.sdk。您还可以按类别和错误级别过滤日志。
如果您在集成广告时遇到问题,您将获得有关问题的详细报告以及如何解决这些问题的建议。
其他资源
-
GitHub 链接。