Apple 的文档说明,网页推送适用于 Safari 16、macOS 13 或更新版本;满足版本条件,只说明可以开始测试,不代表通知已经送达。(Apple Developer:Safari 与浏览器中的 Web Push)

症状:你在 Safari 里点了“允许”,却看不到通知。
最快解法:把 Shopify 店铺集成、Safari 网站授权、服务端发送和 Mac 系统显示分开验收;缺少任一环的证据,都不要判定整条通知链路通过。

为 Shopify 店铺评估第三方网站推送工具的卖家,先确认测试的是自己的哪种通知。
负责上线验收的运营人员,可按下文分别留存授权、发送和显示证据。
团队负责人若需要复现 macOS Safari 行为,可据测试频率决定用现有 Mac,还是临时安排远程 Mac 环境。

01

开测前:你要验收的是哪一种 Shopify 店铺通知?

“店铺通知”可能指买家收到的订单邮件、团队成员收到的提醒,也可能是访客订阅后收到的 Safari 网站推送。这些通知的触发方、接收对象和故障证据并不相同,不能用一封订单邮件证明网页推送成功。

Shopify 将客户邮件与短信、员工通知和 Webhooks 分别说明;Webhooks 可把店铺事件传给外部服务,但这不等于 Shopify 原生提供了面向访客的 Web Push。(Shopify Help Center:店铺通知类型)

通知类型 主要接收者与触发方式 验收时该看什么
Shopify 客户订单通知 买家;由下单、发货等订单事件触发,常见形式为邮件或短信 对应事件是否触发、邮件或短信是否到达;不要用它替代 Safari 推送测试。(Shopify Help Center:客户通知)
Shopify 员工通知 店铺员工;依通知设置和订单等事件触发,常见形式为邮件 收件人、启用状态、测试邮件与对应订单事件。(Shopify Help Center:员工通知)
第三方网站推送 已订阅店铺通知的访客;由第三方应用或自建服务发送 订阅记录、服务端发送结果,以及测试 Mac 上的通知呈现。

先写下测试对象:买家端网页推送、团队内部提醒,还是 Shopify 订单邮件。若目标是买家端网页推送,记录实际发送服务、订阅管理入口和负责配置的人;如果店铺使用 Webhook 转发事件,还要确认测试事件最终如何进入推送服务。

⚠️ Shopify 后台里的测试操作只验证它明确支持的那一段。例如,Webhook 测试应在配置的接收地址核对结果;它不会自动证明访客订阅、推送服务和 Safari 通知都工作正常。(Shopify Help Center:测试 Webhook)

02

第一步:先准备能重复的 Safari 测试条件

开始前,记录测试 Mac 的 macOS 版本、Safari 版本、店铺测试页面、测试账户和当前网络环境。Safari 16、macOS 13 是 Apple 文档列出的网页推送适用起点;如果版本低于该条件,先换符合条件的测试环境,再排查集成。

不要用真实顾客订单制造测试事件。优先使用推送集成提供的测试订阅、测试事件或专用测试页面;若只能通过订单触发,就采用团队可控的测试订单流程,并确保不会误发给顾客或造成真实履约操作。

准备好证据位置,按同一测试事件保存:

  • 站点及 Safari、macOS 版本信息。
  • 测试订阅是否建立、订阅对应的测试账户或标识。
  • 触发时间、测试事件名称和发送端记录。
  • Safari 与 macOS 通知设置的状态。
  • 通知是否出现、显示来源是否可辨认,以及是否符合预期。

截图位置建议:分别截取 Safari“网站”设置里的通知权限、macOS“通知”里的站点设置,以及推送服务的测试事件结果。截图应遮住顾客姓名、邮箱、订单号、订阅令牌和密钥。测试报告只记录必要字段,不要把敏感订阅信息贴进团队群聊。

03

第二步:授权后没有通知,先确认订阅是否真的建立

先让测试页面说明通知用途,再由测试人员主动点击明确的订阅按钮。Apple 对 Web Push 的说明要求由用户手势触发授权请求;用户点“允许”代表浏览器允许网站请求通知权限,不代表推送服务端已经保存订阅,更不代表未来消息必达。

记录测试时的实际状态,不要只写“已授权”:

  • 允许:Safari 的网站设置里该站点允许通知;另查推送服务端是否生成并保存了有效订阅。
  • 拒绝:记录拒绝状态及时间,不要反复弹窗诱导。需由测试人员按站点实际设置恢复授权,再重新测试。
  • 此前已拒绝或不再询问:查看 Safari 的“设置”→“网站”→“通知”,确认该站点状态及“允许网站请求发送通知”选项。Apple 列出“允许”和“拒绝”等网站通知选项,并说明可在 Safari 网站设置中调整。(Apple 支持:更改 Safari 网站通知设置)

如果授权状态显示允许,但测试通知仍未出现,先把“权限已允许”和“服务端有有效订阅”分开核对。两者不是同一个状态;授权提示成功,但没有订阅记录,应先查集成端的订阅流程,不要直接归因于 macOS。

04

第三步:发送测试推送,再检查 Mac 的 macOS 通知设置

用集成方提供的测试事件,或店铺团队能控制的触发方式,执行一次测试。将服务端证据与 Mac 收件表现分别记录:

验收环节 通过证据 失败时的下一步
订阅建立 推送服务记录到本次测试订阅,且目标对象可对应到测试页面 检查授权回调、订阅保存和测试环境是否一致
发送处理 有与本次测试事件对应的请求记录、结果码或错误信息 按集成方文档检查发送配置、请求内容和订阅状态
Mac 接收显示 通知在测试账户的通知中心或桌面出现,来源和内容可核对 检查 Safari 网站权限、macOS 通知开关、专注模式及测试账户
故障定位 发送记录与接收观察能按同一测试事件、时间对应 缺少服务端记录时,标为“发送未验证”,不要断言是 Safari 故障

Apple 给出的 Web Push 服务响应中,HTTP 201 表示推送请求成功处理;它证明的是请求处理结果,不是某个 Mac 屏幕上已经显示通知。Apple 还列出 4 KB 的推送载荷上限;超出时可能返回 PayloadTooLarge,因此服务端出现该错误应先缩小载荷并重新发送。(Apple Developer:Safari 与浏览器中的 Web Push)

若服务端显示成功但 Mac 没有可见通知,先复核网站权限和系统设置,而不是反复重发。macOS 的通知设置可按应用或网站控制通知开关和显示方式;锁屏、显示器休眠或镜像时的通知行为也有单独选项。(Apple 支持:更改 Mac 通知设置)

你可以按 Apple 提供的路径检查:打开 Safari“设置”→“网站”→“通知”,确认测试站点没有被设为“拒绝”;再打开苹果菜单→“系统设置”→“通知”,查找对应网站并检查是否允许通知、是否暂停显示。

如果测试目标是网页而不是添加到 Dock 的网页应用,确认你检查的是 Safari 网站条目。网页应用有自己的设置入口;Apple 的说明指出,网页应用通知要在该网页应用中响应授权请求,且它可能以应用名称显示在通知设置里。(Apple 支持:在 Mac 上使用网页应用)

场景案例:测试人员在 Shopify 测试页面点了“允许”,但推送平台没有订阅记录。此时应判为“授权已观察,服务端订阅未验证”,先追查订阅流程;不能因为浏览器弹出了授权框,就把问题记作 Mac 通知故障。

05

第四步:怎么判定通过、部分通过或暂缓上线?

不要用单次桌面显示结果推断所有 Mac、所有用户账户都能收到。每次测试都要写清设备、系统、Safari、网站授权状态和发送证据;更换账户、测试站点或集成配置后,原结果不自动适用。

验收状态 证据组合 决策
通过当前测试环境 集成配置明确;有效订阅可查;本次发送有记录;Mac 上观察到预期通知 可进入受控上线,并继续观察运行记录
部分通过 已有授权或服务端成功,但缺订阅证据、发送记录或接收端观察 不宣称端到端通过;补齐缺失环节后复测
暂缓上线 测试事件无法触发、订阅无效、服务端持续报错,或通知权限状态不可解释 先修复集成或权限问题,再重新走完链路

如果触发方式是 Shopify Webhook,记录目标地址的接收结果也很重要。Shopify 的帮助文档说明,可发送测试 Webhook 并在指定地址验证;若目标持续返回非 200 响应,Webhook 订阅可能会被自动删除。这里的 200 是目标地址响应条件,不等于 Safari 端的通知送达证明。

上线后继续保存脱敏的发送与异常记录。没有服务端日志或接收端观察的那一段,明确标为“尚未验证”;不要把授权成功、测试工具显示成功或某次 Mac 收到通知,写成通知必达承诺。

对于需要稳定复现 macOS Safari 的团队,先盘点现有 Mac 是否能长期留作测试机。如果没有可用设备,可参考Mac mini M4 租用前的配置与交付核对,再按环境需求比较是否安排美国节点的 Mac mini M4 租用方案。

如果你目前用的是 Windows 浏览器或普通虚拟机,通常无法直接验证 Safari 的真实网站授权与 macOS 通知显示;临时借用同事设备也可能缺少可控账户和重复测试条件。反过来,若团队需要长期高频测试,或必须接入本地物理设备,自购 Mac 可能更合适。只是为了阶段性验收而没有可用 Mac 时,租用 KVMNODE 的远程 Mac 可提供实际 macOS Safari 测试环境;是否采用,应以能否满足你的复测、权限管理和证据留存要求为准。