【发布时间】:2016-11-28 14:56:07
【问题描述】:
尝试为我的网站实现 Safari 推送时遇到了一个问题:单击按钮后,回调函数返回等于“拒绝”的权限,而没有任何弹出窗口出现。
下面的代码在映射为 example.com/v1/log 的控制器上执行
file_put_contents ('./files/log.txt', json_encode ($_REQUEST));
它写'[]';
我在 El capitan OS 上尝试了我在 Safari 9 中的推送,它可以很好地用于订阅和交付,所以我不知道 Safari 10 和 Sierra OS 有什么问题。
这里是 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 将“默认”写入控制台日志,然后将“拒绝”写入控制台日志
【问题讨论】:
标签: javascript safari push-notification apple-push-notifications macos-sierra