网站上有一个按钮和以下JS代码:
window.onload = function() {
var p = document.getElementById('subscribe');
p.onclick = function() {
// Ensure that the user can receive Safari Push Notifications.
if ('safari' in window && 'pushNotification' in window.safari) {
var permissionData = window.safari.pushNotification.permission('MY_REAL_WEBSITE_PUSH_ID');
checkRemotePermission(permissionData);
}
};
var checkRemotePermission = function(permissionData) {
console.log(permissionData);
if (permissionData.permission === 'default') {
// This is a new web service URL and its validity is unknown.
window.safari.pushNotification.requestPermission(
'MY_REAL_WEBSERVICE_URL', // The web service URL.
'MY_REAL_WEBSITE_PUSH_ID', // The Website Push ID.
{}, // Data that you choose to send to your server to help you identify the user.
checkRemotePermission // The callback function.
);
}
else if (permissionData.permission === 'denied') {
// The user said no.
}
else if (permissionData.permission === 'granted') {
// The web service URL is a valid push provider, and the user said yes.
// permissionData.deviceToken is now available to use.
}
};
}
因此,当我按下按钮时,我获得了请求许可。
当我禁止通知时,所有工作都按预期工作:console.log(permissionData);
显示permissionData.permission
等于拒绝,我可以在Safari的首选项中看到网站被拒绝 - >通知部分。
但是当我允许通知时没有任何反应。似乎checkRemotePermission
不会像window.safari.pushNotification.requestPermission
的回调那样触发。
有什么想法?
答案 0 :(得分:0)
我在虚拟机中遇到类似的问题,并找到了VMWare的解决方案。
在配置.vmx
文件中,您需要添加以下内容:
smbios.reflectHost = "TRUE"
serialNumber = "RM125589AGW"
board-id = "MAC-F22598C8"
答案 1 :(得分:0)
仅在成功验证推包的情况下才授予权限。如果有问题,则将权限设置为拒绝。您需要检查服务器上的/log
端点以了解问题所在。