针对网站的OSX推送通知 - 从未调用过Safari requestPermission回调

时间:2014-07-06 14:26:34

标签: macos safari apple-push-notifications

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

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

Safari在运行提示requestPermission时下载此选项,显示用户权限请求提示,但在用户点击“批准”时,永远不会调用回调函数。

window.safari.pushNotification.requestPermission(url, websitePushID, userInfo, callback);
  1. 永远不会调用回调函数。
  2. 不会抛出异常。
  3. 没有对服务器进行POST以获取任何成功或错误。
  4. 该网站现已列在“系统偏好设置”>通知。
  5. 该网站 列在“Safari偏好设置”中的“通知”下。
  6. 立即拒绝进一步尝试requestPermission或查询权限。
  7. 重置拒绝权限的唯一方法是编辑OSX内部sqllite文件,并在我重新发送请求之前删除Safari中的一堆配置文件。

    可能导致这种异常行为的原因是什么?

1 个答案:

答案 0 :(得分:0)

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

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

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