
Image showing action buttons in iOS
本指南仅适用于推送通知。对于应用内消息,请参阅应用内消息:如何添加点击操作。
添加操作按钮
您可以在模板中配置操作按钮,直接在控制台编写消息时配置,或通过API配置。控制台和模板设置
创建推送时,打开高级选项 > 操作按钮。
Image showing action buttons to be added for iOS and Android
API设置
- 移动应用:使用
buttons
参数。传递最多3个包含id
、text
和icon
的对象数组。 - 网页(Chrome):使用
web_buttons
,传递最多2个包含id
、text
、icon
和url
的对象。
操作按钮属性
-
操作ID:特定按钮操作的唯一标识符。点击按钮的ID会传递给您,以便您识别点击了哪个按钮。(例如’accept-button’)
- 每个按钮必须唯一。
- 在OSNotification负载中可用,可在SDK通知打开事件处理程序中访问。
- API:
id
属性
-
标签:按钮应向用户显示的文本。(例如’接受’)
- API:
text
属性
- API:
-
图标:与按钮标签一起显示的可选图标。并非所有平台和操作系统都支持。详细信息请参阅下方的常见问题。
- 移动应用必须在其图片资源中包含按钮。详细信息请参阅下方的操作按钮图标。
- 网站可以使用有效的公开可访问的图标URL。请保持较小大小,因为每次通知显示时都会下载。(例如
http://site.com/icon.png
) - API:
icon
属性
-
按钮URL:点击通知时打开的URL。传递
'do_not_open'
可防止打开任何URL。(例如’do_not_open’)- 仅限网页
- API:
url
属性
操作按钮图标
- iOS 15+支持操作按钮图标
- Android在Android N(又称Android 7)停止支持操作按钮图标
处理操作按钮点击
当用户点击按钮时,OneSignal会将操作ID传递给您的应用/网站。您可以使用默认行为(打开您的应用/网站)或覆盖它。默认行为(打开应用/网站,然后处理)
防止从操作按钮点击启动应用
- Android: 遵循Android SDK设置 > 禁用默认打开行为。这让您可以在服务扩展中拦截点击并运行自定义逻辑(例如调用API)而不打开应用。
- iOS: 在通知上包含
ios_category
,通过UNNotificationCategory对象关联操作。更多详细信息请参阅Apple的声明您的可操作通知类型。 - 网页(Chrome): 使用
_osp=do_not_open
魔术字符串防止打开任何URL。Chrome和Firefox支持此功能,但Safari浏览器不支持。
支持的平台和限制
平台 | 支持的按钮 | 注意事项 |
---|---|---|
iOS | 最多4个 | iOS 15+支持图标。后台处理需要类别。 |
Android / Amazon / Huawei | 最多3个 | Android 7+不支持按钮图标。 |
网页 – Chrome | 最多2个 | 支持按钮和图标。支持_osp=do_not_open 。 |
网页 – Firefox | 无按钮 | _osp=do_not_open 仅适用于启动URL。 |
网页 – Safari | 无按钮 | 不支持_osp=do_not_open 。请提供真实URL。 |
用户通常需要展开通知才能看到按钮(例如,iOS上长按,某些Android OEM上滑动+查看)。
故障排除
按钮不显示
- 展开通知(长按、滑动+查看或展开)。
- 验证您为每个按钮都添加了操作ID和标签。
- 检查平台限制(例如,Chrome上只能有2个按钮)。
在移动网页上点击按钮不会打开浏览器
如果浏览器在后台或完全关闭,大多数移动浏览器(包括Chrome)不会前置或打开URL,尽管点击事件仍会在service worker中触发。这是故意的浏览器行为,用于防止后台应用程序中断用户。- 大多数移动浏览器不会从后台service worker中前置自己。点击仍会在worker中触发,但标签页不会打开。这是故意的。
- 如果您希望标签页获得焦点而不是打开新标签页,请确保启动URL和按钮URL完全相同(包括尾部斜杠)。
图标不显示
- iOS必须是15+版本才支持按钮图标。
- Android 7+不渲染操作按钮图标。
- 在网页上,确认图标URL是公开可访问的且文件较小(便于快速下载)。
为什么有关闭操作按钮?
默认情况下,Windows 10上的网页推送通知包含关闭按钮。但是,如果您添加了自己的操作按钮,则会删除此关闭按钮。因此,在任一情况下,通知都会保留在屏幕上,直到用户与其交互。这是Google设计的,以给用户与通知交互的机会。需要帮助?与我们的支持团队聊天或发送邮件至
support@onesignal.com
请包含以下信息:- 您遇到的问题详情以及复现步骤(如有)
- 您的 OneSignal 应用 ID
- 外部 ID 或订阅 ID(如适用)
- 您在 OneSignal 控制台中测试的消息 URL(如适用)
- 任何相关的日志或错误信息