我编写了代码来获得GCM来发送铬推送通知。我编写了下面的代码来获取GCM id。
var ChromePushManager = function (serviceWorkerPath, callback) {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(serviceWorkerPath).then(function (registration) {
// Registration was successful
console.log('ServiceWorker registration successful with scope: ', registration.scope);
registration.pushManager.subscribe({userVisibleOnly: true}).then(function (subscription) {
console.log("subscription.subscriptionId: ", subscription.subscriptionId);
console.log("subscription.endpoint: ", subscription.endpoint);
// TODO: Send the subscription subscription.endpoint
// to your server and save it to send a push message
// at a later date
var register = ChromePushManager.getRegistrationId(subscription);
callback(null, register);
});
}).catch(function (err) {
// registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
} else {
callback('Service workers aren\'t supported in this browser.', null);
}
};
ChromePushManager.getRegistrationId = function (pushSubscription) {
if (pushSubscription.subscriptionId) {
return pushSubscription.subscriptionId;
}
var endpoint = 'https://android.googleapis.com/gcm/send/';
parts = pushSubscription.endpoint.split(endpoint);
if (parts.length > 1)
{
console.log("RegistrationId : " + parts[1]);
return parts[1];
}
}
var chromePushManager = new ChromePushManager('../js/service-worker.js', function (error, registrationId) {
if (error !== null) {
console.log(error);
}
});它在http://localhost:8080上运行得很好。我在服务器上上传了这段代码。我试着在服务器上执行代码。我搞错了。
ServiceWorker注册失败: DOMException:只允许安全来源(请参阅:https://goo.gl/Y0ZkNV)。
我不知道这个错误说了什么。请您一次解释一下这个错误意味着什么,并给我一个解决方案,在我的服务器端解决这个错误。
谢谢。
发布于 2016-03-29 17:56:43
https://stackoverflow.com/questions/34290337
复制相似问题