Hai我想将推送通知发送到浏览器。所以我使用了信号。
var OneSignal = OneSignal || [];
OneSignal.push(["init", {
appId : "xxxxxxx",
autoRegister : false, /* Set to true to automatically prompt visitors */
subdomainName : "https://foxtaxi.onesignal.com",
notifyButton : {
enable: true /* Set to false to hide */
}
}]);
OneSignal.push(function() {
OneSignal.once("init", function(event) {
alert("hhh");
});
});
但我得到未捕获的TypeError:OneSignal.once不是函数。如果有人知道,请帮助我。
答案 0 :(得分:6)
您需要使用OneSignal.push(function() { ... })
打包您的电话:
OneSignal.push(function() {
/* ... */
});
此外,OneSignal.once('init')
不是有效事件。 supported events are described here。
OneSignal SDK在您的页面上异步加载,例如:
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async"></script>
基本上,没有async
属性的脚本在获取和执行页面的其余部分时会停止加载,但是async
脚本允许加载页面的其余部分,而它是最终获取并执行。这对依赖于OneSignal
现有的页面脚本提出了问题。如果OneSignal
变量尚不存在,如何使用OneSignal
?
大多数OneSignal代码示例都以:
开头var OneSignal = window.OneSignal || [];
这说:创建一个OneSignal变量,如果加载OneSignal已经将它分配给加载的实例,否则让OneSignal等于空数组[]
。
所有数组都有一个.push()
function,所以在这一点上,OneSignal变量只是我们正在推动的一系列函数。
最终加载SDK时,SDK processes all the functions pushed so far and redefines .push()
。
答案 1 :(得分:0)
OneSignal.push(function() {
OneSignal.once("init", function(event) {
// This callback fires only once when the event occurs, and does not refire
});
});