Javascript Safari推送通知”;“允许”;但它们总是放在“中”;“否认”;模式

Javascript Safari推送通知”;“允许”;但它们总是放在“中”;“否认”;模式,javascript,safari,Javascript,Safari,使用PHP成功验证我的软件包并通过endpoint/v1/pushPackages/web.com.mywebsite将其交付给Safari后,出现了预期的弹出窗口: 现在出现了三个问题: 按下“允许”后,未触发任何内容,控制台为空,应在已授予的条件下打印“设备令牌:…” 退出并重新打开Safari后,我转到Safari>首选项>网站>通知,我的网站的值为“拒绝” 如果我将值从“拒绝”更改为“允许”,则不会保存该值。Safari将返回“拒绝” 我可以选择项目并按下“删除”按钮,重新启动Saf

使用PHP成功验证我的软件包并通过endpoint
/v1/pushPackages/web.com.mywebsite
将其交付给Safari后,出现了预期的弹出窗口:

现在出现了三个问题:

  • 按下“允许”后,未触发任何内容,控制台为空,应在
    已授予的
    条件下打印“设备令牌:…”
  • 退出并重新打开Safari后,我转到Safari>首选项>网站>通知,我的网站的值为“拒绝”
  • 如果我将值从“拒绝”更改为“允许”,则不会保存该值。Safari将返回“拒绝”
  • 我可以选择项目并按下“删除”按钮,重新启动Safari,我的网站将再次请求权限,但问题仍然存在。我的日志文件是空的,没有抛出错误

    var checkSafariPermission = function (permissionData)
    {
        if (permissionData.permission === 'default')
        {
            window.safari.pushNotification.requestPermission(
                'https://mywebsite.com',
                'web.com.mywebsite',
                {},
                checkSafariPermission
            );
        } else if (permissionData.permission === 'denied')
        {
            console.log('denied');
        } else if (permissionData.permission === 'granted')
        {
            // This is never triggered!
            console.log('Device token: ' + permissionData.deviceToken);
        }
    };
    
    var permissionData = window.safari.pushNotification.permission('web.com.mywebsite');
    checkSafariPermission(permissionData);
    
    我有以下路线:

    POST /v1/devices/{deviceToken}/registrations/web.com.mywebsite
    DELETE /v1/devices/{deviceToken}/registrations/web.com.mywebsite
    
    准备好接收数据了,但我认为Safari还没有请求此路由

    他说:

    重要提示:确保您的web服务器使用的是真正的证书 由证书颁发机构颁发,而不是自签名证书。如果 您的证书是自签名的,推送通知不会到达您的 用户

    这可能是问题所在吗?目前,我的网站有一个名为“让我们加密权威X3”的证书,其中包含以下数据,但我不知道这是否是一个自签名证书

    Common name: www.mywebsite.com
    SANs: mail.mywebsite.com, mywebsite.com, webmail.mywebsite.com, www.mywebsite.com
    Valid from November 10, 2020 to February 8, 2021
    Serial Number: 046829bc4b1e9d71ed27b...
    Signature Algorithm: sha256WithRSAEncryption
    Issuer: Let's Encrypt Authority X3
    


    更新1-我刚获得并安装了一个证书,问题仍然存在

    已解决

    由于Safari,这不是一个问题,但事实是,我在OSX上使用了一个虚拟机。在真正的macOS上,它工作得非常好

    但是,请确保您拥有有效的证书,因为这仍然是必需的。

    有些东西必须在实时环境中进行测试,因此,对于大多数开发人员来说,拥有本地、实时测试和实时环境是正常的。