尝试为我的网站实现Safari推送时,我遇到了一个问题:点击按钮后,回调函数返回的权限值为“denied”,但没有任何弹出窗口出现。
以下代码在控制器上执行,该控制器映射到example.com/v1/log。
以下代码在控制器上执行,该控制器映射到example.com/v1/log。
file_put_contents ('./files/log.txt', json_encode ($_REQUEST));
它会写入 '[]';
我在El Capitan操作系统的Safari 9中尝试了我的推送,对于订阅和投递来说都很正常,所以我不知道Safari 10和Sierra操作系统的问题在哪里。
这是webpush.js代码:
const websitePushID = 'web.com.example';
const webServiceUrl = 'https://example.com';
var permissionData = {};
window.addEventListener('load', function () {
webPush.pushButton = $('.js-push-btn') || false;
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js').then(webPush.initialiseState);
$('.js-push-btn').on('click', function () {
webPush.do();
});
} else {
if ('safari' in window && 'pushNotification' in window.safari) {
permissionData = window.safari.pushNotification.permission(websitePushID);
$('.js-push-btn').on('click', function () {
checkRemotePermission(permissionData);
});
}
}
});
var checkRemotePermission = function (permissionData) {
if (permissionData.permission === 'default') {
try {
console.log('default');
window.safari.pushNotification.requestPermission(
webServiceUrl,
websitePushID,
{},
checkRemotePermission
);
} catch (e) {
console.log(e);
}
}
else if (permissionData.permission === 'denied') {
console.log('denied');
}
else if (permissionData.permission === 'granted') {
console.log('granted');
}
};
dat在控制台日志中写入了"默认",之后又写入了"拒绝"