Safari推送请求权限在SAFARI 10.0.1中返回“被拒绝”

时间:2016-11-28 14:56:07

标签: javascript safari push-notification apple-push-notifications macos-sierra

尝试为我的网站实施Safari推送我遇到了一个问题:点击按钮后,回调函数返回等于“被拒绝”的权限,没有任何弹出窗口外观。

以下代码在映射为example.com/v1/log

的控制器上执行
file_put_contents ('./files/log.txt', json_encode ($_REQUEST));

它写'[]';

我尝试在El Capitan OS上使用Safari 9进行推送,它适用于订阅和发送,所以我不知道Safari 10& S的问题是什么。 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写入'default',然后'拒绝'到控制台日志

1 个答案:

答案 0 :(得分:0)

首先检查您是否使用Apple的全球关系cerification authority.cer文件签署签名文件,该文件是从2016年2月14日起强制执行的。可能你得到一个错误,如无法提取包。通常,如果您使用任何框架,则会出现权限错误,该错误不允许safari在日志的端点上向您发送日志文件。这是我的问题,当我解决这两个问题时,safari将其所有数据推向了一个魅力!我的建议首先实现日志端点然后你将解决任何错误。