【问题标题】:Javascript Safari Push Notifications "Allowed" but are always put in "Deny" modeJavascript Safari 推送通知“允许”但始终处于“拒绝”模式
【发布时间】:2020-11-27 19:41:15
【问题描述】:

使用 PHP 成功验证我的包并通过端点/v1/pushPackages/web.com.mywebsite 将其传递到 Safari 后,出现了预期的弹出窗口:

现在发生了三个问题:

  1. 按“允许”后没有触发任何操作,控制台为空,应在granted 条件下打印“设备令牌:...”。
  2. 退出并重新打开 Safari 后,我转到 Safari > 首选项 > 网站 > 通知,我的网站的值为“拒绝”!
  3. 如果我将值从“拒绝”更改为“允许”,则不会保存。 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 尚未请求此路由。

The official documentation 说如下:

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

这可能是问题吗?目前我的网站有一个名为“Let's Encrypt Authority 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 - 我刚刚获得并安装了证书,问题仍然存在

【问题讨论】:

    标签: javascript safari


    【解决方案1】:

    已解决

    这不是因为 Safari 的问题,而是因为我在 OS X 上使用了 Virtual Box。在真正的 macOS 上它工作得很好!

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

    【讨论】:

    • 有些东西必须在实时环境中进行测试,因此对于大多数开发人员来说,在某些时候拥有本地实时测试和实时环境成为常态。
    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多