【问题标题】:OSX Push Notifications for Websites - Safari requestPermission callback never called网站的 OSX 推送通知 - 从未调用过 Safari requestPermission 回调
【发布时间】:2014-07-06 14:26:33
【问题描述】:

按照Apple Documentation 的说明,允许 Safari 用户访问网站并获取 Apple 推送通知服务的推送通知。

我正在使用 SSL,拥有 Apple 的证书,并且已经生成了推送包文件。

Safari 在运行提示 requestPermission 时下载此内容,显示用户权限请求提示,但在用户单击“批准”时,从不调用回调函数。

window.safari.pushNotification.requestPermission(url, websitePushID, userInfo, callback);
  1. 永远不会调用回调函数。
  2. 不抛出异常。
  3. 对于任何成功或错误,都不会向服务器发送 POST。
  4. 该网站现在列在“系统偏好设置”>“通知”下。
  5. 该网站列在 Safari 偏好设置中的通知下。
  6. 请求权限或查询权限的进一步尝试立即被拒绝。

重置被拒绝权限的唯一方法是编辑 OSX 的内部 sqllite 文件并删除 Safari 中的一堆配置文件,然后我才能重试请求。

什么可能导致这种异常行为?

【问题讨论】:

    标签: macos safari apple-push-notifications


    【解决方案1】:

    如果没有您使用的确切 javascript,很难判断,但您在苹果文档中看到的 3 种权限类型是默认、授予和拒绝。

    如果授予或拒绝权限,则用户已设置是否要接收这些推送通知。一旦用户拒绝推送通知,Apple 就决定不能再次询问他们(不更改设置)。如果他们已经被授予权限,则无需调用 window.safari.pushNotification.requestPermission

    您调用 window.safari.pushNotification.requestPermission 的唯一时间是权限既没有被拒绝也没有被授予。只有在这种情况下,您才需要调用该函数并期望响应触发回调函数。如果您看到权限请求提示,则表示 requestionPermission 已生效。

    【讨论】:

    • 在调用 requestPermission 之前,权限处于“默认”状态,但仍然没有进行回调。正在运行的代码实际上与示例中的代码一样,只是回调将其参数写入控制台。我有一个与 Apple 合作的错误报告。
    • @simbolo 你有没有下定决心?我们看到了同样的事情。
    • @Casey 不!我打开了许多开发人员技术支持案例,却被告知 Safari 不是受支持的产品。所以有一个开放的错误报告 (#17565372) 在这些月之后仍然开放。最后我放弃了实施,因为无法弄清楚为什么它不起作用。我也无法订阅任何其他网站,这让我感到安慰,所以不仅仅是我。我得出的结论是,小牛队的 Safari 出现了问题,直到今天仍然存在问题。
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多