mar*_*ony 5 javascript onesignal
在检查控制台后,我尝试使用简单的方法在网站上实现一个信号通知,它向我显示此错误。如何在我的网站中实现单一信号通知?
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
<script>
window.OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "c208302-0-284011-12E8D",
});
});
</script>
ServiceWorkerManager.js:399 [Service Worker Installation] Installing service worker failed TypeError: Failed to register a ServiceWorker for scope ('https://www.simplenikah.pk/') with script ('https://www.simplenikah.pk/OneSignalSDKWorker.js?appId=c3aca046-2d30-4703-9454-c9f2666e3ac1'): A bad HTTP response code (404) was received when fetching the script.
(anonymous) @ ServiceWorkerManager.js:399
a @ tslib.es6.js:63
/OneSignalSDKWorker.js?appId=c3aca046-2d30-4703-9454-c9f2666e3ac1:1 Failed to load resource: the server responded with a status of 404 ()
OneSignalError.js:18 Uncaught (in promise) Pe: Registration of a Service Worker failed.
at xe.<anonymous> (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151105:1:144815)
at Generator.next (<anonymous>)
at r (https://cdn.onesignal.com/sdks/OneSignalPageSDKES6.js?v=151105:1:716)
Run Code Online (Sandbox Code Playgroud)
这看起来是与setup相关的常见问题。
默认情况下, Service Worker文件应位于根目录中。
文件:
问题可能是输入错误,或者如果您使用 OneSignal Push 插件,Worpress 会将文件放入路径为 的文件夹中wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/OneSignalSDKWorker.js。如果您尝试通过添加自定义OneSignal对象初始化,这将引发错误。您在问题中添加的类似代码。
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js"
async="">
</script>
Run Code Online (Sandbox Code Playgroud)
<script>
window.OneSignal = window.OneSignal || [];
OneSignal.push(function() {
OneSignal.init({
appId: "YOUR_APP_ID",
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
因此,要正确设置对象,缺少以下内容:工作人员的有效 范围和路径。
例如
OneSignal.SERVICE_WORKER_PARAM = { scope: '/push/onesignal/' };
OneSignal.SERVICE_WORKER_PATH = 'push/onesignal/OneSignalSDKWorker.js'
Run Code Online (Sandbox Code Playgroud)
修复此问题或通过将工作文件移动到网站的根目录,或者如果这不是一个选项,则无论选择哪个位置,请在初始化配置中指定它。这样OneSignal就会在正确的位置寻找它。
一切加在一起将是这样的:
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async="" ></script>
<script>
const OneSignal = window.OneSignal || [];
const initConfig = {
appId: "YOUR_APP_ID"
};
OneSignal.push(function () {
OneSignal.SERVICE_WORKER_PARAM = { scope: '/push/onesignal/' };
OneSignal.SERVICE_WORKER_PATH = 'push/onesignal/OneSignalSDKWorker.js'
OneSignal.init(initConfig);
});
</script>
Run Code Online (Sandbox Code Playgroud)
参考号 问题 403/404,子目录中的 Service Worker 文件
如上所述,如果推送插件正在使用并处于活动状态,任何自定义设置都必须否定默认行为,或停用插件,或者还有一个选项可以关闭插件对象初始化,请参见下文。
插件设置页面 -> 高级设置 -> [ --[+]] 禁用 OneSignal 初始化
对于仍然有效的插件,这里是代码:
window.addEventListener('load', function() {
window.OneSignal = window.OneSignal || [];
window.OneSignal.push(function() {
OneSignal.SERVICE_WORKER_PATH = "wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/OneSignalSDKWorker.js";
OneSignal.SERVICE_WORKER_PARAM = { scope: "/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/" };
delete window._oneSignalInitOptions.path
window.OneSignal.init(window._oneSignalInitOptions);
});
});
Run Code Online (Sandbox Code Playgroud)
重要部分:
delete window._oneSignalInitOptions.pathwindow.OneSignal.init(window._oneSignalInitOptions);参考号 WordPress 定制
进一步扩展功能在配置中添加设置,例如
const initConfig = {
appId: "YOUR_APP_ID",
notifyButton: {
enable: true
},
promptOptions: {
...promtOptions
}
}
Run Code Online (Sandbox Code Playgroud)
参考号 电子邮件 电话号码 网页提示
| 归档时间: |
|
| 查看次数: |
4162 次 |
| 最近记录: |