在 Safari 10.0.1 中,Safari 推送请求权限返回 "denied"。

3
尝试为我的网站实现Safari推送时,我遇到了一个问题:点击按钮后,回调函数返回的权限值为“denied”,但没有任何弹出窗口出现。
以下代码在控制器上执行,该控制器映射到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在控制台日志中写入了"默认",之后又写入了"拒绝"

1个回答

0
首先,检查您是否使用苹果的全球关系认证机构签署了签名文件。cer文件是从2016年2月14日起强制要求的。可能会出现无法提取软件包的错误。通常,如果您正在使用任何框架,则会出现权限错误,不允许Safari将日志文件发送到您的日志端点。这就是我的问题所在,当我解决了这两个问题后,Safari推送了所有数据!我的建议是首先实现日志端点,然后您将解决任何错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接