跳转到主要内容

常见设置问题

验证您的 OneSignal 仪表板设置

确保您已完成 WordPress 设置指南 中的每个步骤:
  • 在创建 OneSignal 应用时选择 WordPress 插件 选项
  • 您的站点 URL 必须与浏览器 URL 完全匹配
    • 例如,https://example.comhttps://www.example.com 相同。请始终使用一个版本。
    • 推送仅支持一个站点源。请参阅同源策略
  • 确保您至少添加了一个权限提示。

不要手动添加 OneSignal 代码

OneSignal WordPress 插件自动包含初始化脚本和 Service Worker。 ✅ 这意味着:
  • 不应该在主题、页脚或其他插件中手动添加 OneSignal JavaScript 代码。
❌ 如果您想使用自定义代码设置,请先卸载 WordPress 插件以避免冲突。

如何排查您的网站问题

1

验证插件已激活并打开开发者工具

在启用插件的正常(非隐身)浏览器窗口中加载您的网站。

右键单击您的网站,点击检查,然后打开控制台标签。

2

检查控制台中的 OneSignal 错误

打开控制台标签,刷新页面,并查找任何与 OneSignal 相关的红色或黄色错误。 有关帮助,请参阅常见的 OneSignal 控制台错误
3

在浏览器中检查订阅状态

在控制台中粘贴以下内容:
OneSignal.User.PushSubscription.id
如果已订阅,它将返回一个字符串(您的订阅 ID)。

在控制台中查找您的 OneSignal 订阅 ID。

4

在 OneSignal 仪表板中验证订阅 ID

转到 OneSignal.com > Audience > Subscriptions 并搜索上面返回的 ID。

在您的 OneSignal 仪表板中搜索订阅 ID。

5

发送测试推送通知

如果订阅存在且状态为已订阅,请按照推送指南发送通知。 如果什么都没有显示,请参阅未显示通知获取特定于浏览器的修复方法。

常见的 OneSignal 控制台错误

SdkInitError: OneSignal: 此网络推送配置只能在…上使用。您当前的源是…

站点 URL 不匹配错误。

您在 OneSignal 仪表板中的站点 URL 与您的实际域名不匹配。 确保它与您在浏览器中看到的域名完全匹配。

PushPermissionNotGrantedError: 用户关闭了权限提示。

访问者拒绝了浏览器提示。在冷却期过期之前,它不会再次出现。 请参阅Web 权限提示了解浏览器规则,或清除站点数据以立即重试。

OneSignal 网络 SDK 只能初始化一次。

重复 OneSignal 初始化错误。

您加载了两次 OneSignal。如果您使用插件,请移除手动添加的 OneSignal 代码。

安装 Service Worker 失败.. 403 或 404 错误

Service Worker 文件缺失 (403/404)。

确保此文件可访问: https://your-site.com/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/OneSignalSDKWorker.js 如果不能访问,请参阅常见插件支持修复 CDN 或缓存问题。

常见插件支持

CDN 和缓存插件可能会阻止 OneSignal 所需的文件。请使用这些特定于插件的设置:

Autoptimize

排除脚本中添加:
wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/(.*)

WP Rocket

CDN > 从 CDN 中排除文件下添加:
(.*)/onesignal-free-web-push-notifications/sdk_files/(.*)

LiteSpeed Cache

CDN > 排除路径下添加:
(.*)/onesignal-free-web-push-notifications/sdk_files/(.*)
然后按保存。

WP Super Cache

  1. 转到 设置 > WP Super Cache > CDN
  2. 如果包含子字符串则排除 中,包含:onesignal-free-web-push-notifications
  3. 点击 内容 > 删除缓存

WP Engine

在 WP Engine 插件 > 常规设置 > HTML 后处理中添加以下内容,将 YOURSITEHERE 替换为您的站点:
text
#https?://(www\.)?(YOURSITEHERE\.com|mywpenginehandleHere.wpengine.com|wpengineCDNpathHere.wpengine.netdna-(ssl|cdn).com)/wp-(content|includes)#
=> https://wpengineCDNpathHere-wpengine.netdna-ssl.com/wp-$4
#https://wpengineCDNpathHere-wpengine.netdna-ssl.com/plugins/onesignal-free-web-push-notifications/#
=> https://mywebsiteHere.com/wp-content/plugins/onesignal-free-web-push-notifications/
#https://wpengineCDNpathHere-wpengine.netdna-ssl.com/wp-content/plugins/onesignal-free-web-push-notifications/#
=> https://mywebsiteHere.com/wp-content/plugins/onesignal-free-web-push-notifications/

W3 Total Cache

  1. 转到 性能 > CDN
  2. 被拒绝的文件下添加:
{plugins_dir}/onesignal-free-web-push-notifications/sdk_files/*

W3 Total Cache 排除设置。

BunnyCDN

在插件的 CDN 排除路径中排除 onesignal

BunnyCDN 排除示例。

CDN Enabler

在设置 > CDN Enabler 中,在”排除”中添加:
onesignal-free-web-push-notifications

PressCDN

在排除目录中添加:
/wp-content/plugins/onesignal-free-web-push-notifications/

Breeze

设置 > CDN > 排除内容中添加:
/onesignal-free-web-push-notifications/sdk_files/

Breeze 排除示例。

Hummingbird Pro

转到 资产优化,找到 OneSignal SDK 文件,并将其从优化中移除。

Hummingbird Pro 资产优化。

Sucuri

按照 Sucuri 的白名单指南允许 OneSignal 文件。

iThemes Security plugin

在系统调整下禁用”在插件中禁用 PHP”选项。

iThemes PHP 插件设置。

Defender Security plugin

不要启用”阻止 PHP 执行”。 转到 Defender 插件 > 安全调整并验证该设置已禁用。

Service Worker 访问的 .htaccess 示例

html
<Files *.php>
Order allow,deny
Deny from all
</Files>
<Files OneSignalSDKWorker.js.php>
Allow from all
ForceType 'application/javascript; charset=UTF-8'
</Files>
<Files OneSignalSDKWorker.js>
Allow from all
ForceType 'application/javascript; charset=UTF-8'
</Files>

发送通知后服务器速度放缓或网站无法访问

如果您的服务器在发送通知后遇到速度放缓或变得无法访问,这通常是由于通知资产的负载增加或服务器资源有限。

不要自行托管通知图标

避免自行托管通知中使用的图像。当您托管自己的通知图标或图像时,您的服务器可能会过载,因为每个接收者的浏览器都会在发送通知的同时尝试获取图像。 为了减少服务器压力,请使用为高并发访问优化的图像托管解决方案或 CDN 服务。

考虑升级托管资源

如果服务器问题持续存在,您可能需要:
  • **升级您的托管计划:**更高的带宽或更强大的托管可能是处理大规模通知发送所必需的。
  • **咨询您的托管提供商:**您的提供商可以提供针对您的托管环境的见解或优化。

I