应用内广告 - 横幅广告(WebView)
服务介绍和控制台设置方法是 应用内广告介绍文档请参考。
这是一个可以在 WebView 中展示横幅广告的广告库。
开始使用
横幅广告 API 可在 Toss 应用 5.241.0 及以上版本中使用。
5.241.0 及以上
支持
可使用横幅广告
低于 5.241.0
不支持
无法使用横幅广告 API
在开发阶段使用测试用广告 ID。
横幅广告 - 列表型
ait-ad-test-banner-id
横幅广告 - 信息流型
ait-ad-test-native-image-id
API 参考
概述
TossAds.initialize
初始化横幅广告 SDK。显示广告前必须调用一次。
TossAds.attachBanner
将横幅广告附加到特定 DOM 元素。会应用样式预设(theme、tone、variant),并且返回对象的 destroy() 可通过该方法移除横幅。
TossAds.destroyAll
移除所有已初始化的横幅槽位。
每个 API 都 isSupported() 可通过该属性确认当前环境下该功能是否可用。
事件流程
横幅广告 SDK 初始化(initialize)
初始化横幅广告 SDK。初始化过程异步进行,完成与否会通过回调传递。使用广告前必须初始化一次,并建议仅在应用最顶层组件中调用一次。
签名
参数
options ·
TossAdsInitializeOptions这是在 SDK 初始化时传入的选项对象。可以设置初始化成功/失败的回调。
options.callbacks ·
{ onInitialized?: () => void; onInitializationFailed?: (error: Error) => void; }定义 SDK 初始化过程中要调用的回调的对象。
options.callbacks.onInitialized ·
() => voidSDK 初始化成功完成时调用。
options.callbacks.onInitializationFailed ·
(error: Error) => voidSDK 初始化失败时调用。失败原因会以
Error对象传递。
TossAdsInitializeOptions
属性
isSupported() => boolean
在当前运行环境中
TossAds.initialize用于确认该功能是否可用的函数。调用广告 SDK 初始化前必须先确认是否支持。
示例
横幅广告附加(attachBanner)
将横幅广告附加到特定 DOM 元素。会应用样式预设(theme、tone、variant),并且返回对象的 destroy() 可通过该方法移除横幅。
TossAds.initialize需要先调用后初始化 SDK,之后才能使用。
签名
参数
adGroupId · 必填 ·
string这是广告组级别 ID。请输入在控制台获取的值。
target · 必填 ·
string | HTMLElement这是要附加广告的 DOM 元素。
HTMLElement可以直接传入对象,或传入 CSS 选择器字符串。options ·
TossAdsAttachBannerOptions这是可设置横幅样式及广告事件回调的选项对象。
options.theme ·
'auto' | 'light' | 'dark'设置横幅主题。默认值为
'auto',并会根据系统深色模式设置自动切换。options.tone ·
'blackAndWhite' | 'grey'设置横幅背景色调。默认值为
'blackAndWhite'。options.variant ·
'expanded' | 'card'设置横幅形式。默认值为
'expanded'。options.callbacks ·
AttachBannerCallbacks这是可接收广告生命周期事件的回调对象。
options.callbacks.onAdRendered ·
(payload) => void广告渲染完成时调用。
options.callbacks.onAdImpression ·
(payload) => void当广告达到可在用户屏幕上曝光的状态时调用。
options.callbacks.onAdViewable ·
(payload) => void当广告曝光被记录并产生收益时调用。
options.callbacks.onAdClicked ·
(payload) => void广告被点击时调用。
options.callbacks.onNoFill ·
(payload) => void没有可展示广告时调用。
options.callbacks.onAdFailedToRender ·
(payload) => void广告渲染失败时调用。
TossAdsAttachBannerOptions
TossAds.attachBanner 这是函数的选项类型。
theme
'auto' | 'light' | 'dark'
'auto'
主题设置。 auto会根据系统深色模式自动切换
tone
'blackAndWhite' | 'grey'
'blackAndWhite'
背景色调
variant
'card' | 'expanded'
'expanded'
横幅形式。 card具有左右内边距 + border-radius 应用
callbacks
TossAdsBannerSlotCallbacks
-
广告事件回调
TossAdsAttachBannerResult
TossAds.attachBanner 这是函数的返回类型。
destroy():移除已附加的横幅。建议在组件卸载时调用,以防止内存泄漏。
TossAdsBannerSlotCallbacks
这是横幅广告事件回调。
onAdRendered:广告已渲染。onAdImpression:广告已在屏幕上曝光。onAdViewable:广告曝光已记录。(产生收益的时点)onAdClicked:用户点击了广告。onAdFailedToRender:广告渲染失败。onNoFill:没有可展示的广告。
TossAdsBannerSlotEventPayload
这是横幅广告事件载荷。
slotId:生成的槽位 IDadGroupId:广告组 IDadMetadata:广告元数据(creativeId、requestId)
TossAdsBannerSlotErrorPayload
这是横幅广告错误载荷。
返回值
TossAdsAttachBannerResult 会返回对象。这个对象的 destroy() 可通过方法移除横幅。
属性
isSupported() => boolean
在当前运行环境中
TossAds.attachBanner用于确认该功能是否可用的函数。附加横幅广告前必须先确认是否支持。
示例
这是横幅广告错误载荷。
移除所有横幅槽位(destroyAll)
移除所有已初始化的横幅槽位。
签名
属性
isSupported() => boolean
在当前运行环境中
TossAds.destroyAll用于确认该功能是否可用的函数。可在整体移除横幅广告实例前确认是否支持时使用。
示例
使用模式
初始化时机
建议 SDK 只在应用启动时初始化一次。推荐在以下时机进行初始化:
在应用最顶层组件(App.tsx)挂载时
在进入首个要展示广告的页面之前
容器尺寸设置
广告容器必须设置为正确的尺寸。
内存管理
组件卸载时应移除横幅,以防止内存泄漏。
TossAds.attachBanner是 destroy() 会返回包含该方法的对象,因此在清理时调用它即可。
错误处理
始终 onInitializationFailed和 onAdFailedToRender 请提供回调以应对错误。
可复用的自定义 Hook
在多个页面使用横幅广告时,拆分成自定义 Hook 会更方便。
useTossBanner
这是一个同时处理 SDK 初始化和横幅挂载的 Hook。
使用示例
参考:
useTossBanner即使在多个组件中调用也很安全。若已初始化,不会尝试重复初始化。
广告政策
Toss Ads SSP 政策
请务必遵守以下政策。若违反,广告展示可能会受到限制。
即使本政策未明确规定,刻意诱导广告展示·点击·效果,或造成用户误解的行为,也可能被视为违反政策。
所有合作方在因违反政策而终止服务时,都应遵守服务终止政策。
UI/UX 质量下降
将广告与内容的区分变得不明确,或引导用户在与自身意图无关的情况下消费或点击广告,或通过 UI 设计妨碍正常服务使用的行为
将广告伪装成“推荐服务”、“金融技巧”等
修改非 Toss Ads 指南范围内广告单元的颜色·字体
擅自修改广告的标题·标签·CTA 文案及设计
将广告放置在用户交互元素(按钮、游戏区域等)附近,使其容易发生非预期点击的结构
在同一页面上放置 2 个以上相同格式广告的情况
让用户难以正常关闭页面或返回上一页的死路(Dead-end)结构
使用户难以区分广告与服务 CTA 功能的结构
使用户难以识别或访问正常使用服务所需 CTA 的结构
广告必须保留“Ad”标记
所有广告 UI 都必须使用 web-base 标准组件
禁止为人工诱导广告效果或损害用户体验而进行的 UI/UX 设计
广告调用行为篡改
更改或绕过 SDK 默认事件流程或广告调用方式的行为
SDK Click / Impression 事件篡改
不经过广告 SDK,而是用自有逻辑调用广告,或通过绕过 SDK 事件来实现的情况
阻止或异常控制 Back 按钮,妨碍用户正常关闭页面或返回上一页的情况
禁止篡改 SDK 默认事件(Click / Impression)结构
不可调用 SDK 外部 API
异常流量及效果操纵
以自动化或人为方式扭曲流量及广告效果的行为
定期刷新广告区域
人为制造效果(点击·展示等)的活动
如确认基于流量质量的异常模式,将限制广告、施加处罚并暂停结算
奖励·参与型点击引导
在点击广告的同时提供奖励或优惠的行为
“点击广告立即提供奖励”
“点击广告即可获得积分”
禁止将广告消费与奖励直接关联的结构
禁止与点击奖励性文案·活动联动
广告隐藏或重叠
故意隐藏广告,或让广告被其他 UI 元素遮挡,使用户难以清楚识别广告存在的行为
• 透明广告
• 在其他卡片 UI 后插入广告 DOM
• 广告的展示状态必须能够被明确确认
UX / Product Principle 运营原则
广告也应遵循 Toss 的 UX 原则。
Toss Principle
适用标准
示例
Simplicity
广告应当清晰明确,且无需额外说明也能理解其含义
使用“立即查看”、“查看广告”等明确 CTA
Clear Action
用户应能预测点击广告后会发生什么行为
在重定向·跳转新窗口时显示告知文案
No Deception (UX Red Rule)
广告不应在意料之外的时机、形式或位置出现
禁止在进入服务后立即展示全屏横幅
Value First
广告不应妨碍客户的服务目标
禁止在支付/开户流程中插入广告
使用限制及制裁措施
若 Apps in Toss 广告版位或服务违反本政策,可能会受到处罚。
限制流程
限制措施原则上会根据违规行为的累积程度分阶段实施。但根据违规类型或严重性,即使是单次违规,也可能立即适用 30 天使用限制或永久使用限制。
※ 同时确认的违规,无论违规槽位数量多少,都按 1 次违规处理。此后如另行确认违规,违规次数将累计。

不当收益处理
因违反政策、无效流量或其他不正当方式产生的收益,可能会被视为不当收益。
一旦确认存在不当收益,相关金额可能会被暂停支付或拒绝支付,已支付金额也可能同样被追回。
申诉流程
收到使用限制通知时 可在 30 天内提交申诉可以。
申诉资料可以通过 Channel Talk 提交。
提交的资料将依据内部标准进行审核,必要时可能会要求补充资料。
审核可能需要约 1 个工作周。
对于申诉申请 会重点审查处罚是否适当,仅因已修正违规事项或提交防止再发计划,并不会解除处罚。
若通过提交的申诉资料确认,构成处罚依据的违规事实不成立,或处罚判断存在明显错误,则处罚可能会被解除。
对于重复或重大违规,服务使用可能会被永久限制。
测试
在开发阶段务必使用测试用广告 ID。若使用真实广告 ID 进行测试,可能会被视为违反政策并受到不利影响。
WebView 横幅广告测试 ID 开始使用可在其中确认。
上线前请务必确认以下项目。
确认广告是否能正常加载。
确认点击后是否会跳转到预期页面。
确认返回操作是否正常工作。
确认是否不会干扰支付或认证流程。
常见问题
最后更新于
这有帮助吗?