跳转到主要内容

常见设置问题

验证您的 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)。
4

在 OneSignal 仪表板中验证订阅 ID

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

发送测试推送通知

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

常见的 OneSignal 控制台错误

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

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

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

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

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

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

安装 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/*

BunnyCDN

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

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/

Hummingbird Pro

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

Sucuri

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

iThemes Security plugin

在系统调整下禁用”在插件中禁用 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 服务。

考虑升级托管资源

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