2014-07-06 39 views
1

按照Apple Documentation的说明,允许具有Safari的用户访问网站并获取Apple推送通知服务的推送通知。OSX网站推送通知 - Safari requestPermission回拨从未呼叫

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

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

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

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

什么可能导致这种不寻常的行为?

回答

0

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

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

唯一一次你会调用window.safari.pushNotification.requestPermission是当权限没有被拒绝或授予。只有在这种情况下,您才需要调用该函数并期望响应触发回调函数。如果您看到许可请求提示,则意味着请求许可已起作用。

+0

在调用requestPermission之前,权限处于“默认”状态,但仍不会进行回调。正在运行的代码与样本中的字面相同,只是回调函数将其参数写入控制台。我有一个苹果公司的bug报告。 – simbolo

+0

@simbolo你有没有想过解决?我们看到了同样的事情。 – Casey

+0

@Casey不要!我打开了许多开发人员技术支持案例,只是被告知Safari不是受支持的产品。因此,有一个开放的bug报告(#17565372),在这几个月后仍然是开放的。最后,我放弃了实施,因为它始终无法解决它为什么不起作用。一些安慰是因为我无法订阅任何其他网站,所以它不仅仅是我。我得出的结论是,在小牛队的比赛中有一些闯入Safari,并且至今仍然被打破。 – simbolo