window.safari.pushNotification.requestPermission 总是返回“拒绝”

Posted

技术标签:

【中文标题】window.safari.pushNotification.requestPermission 总是返回“拒绝”【英文标题】:window.safari.pushNotification.requestPermission always returns "denied" 【发布时间】:2013-11-26 21:56:57 【问题描述】:

编辑:我找到了实现 Safari 推送通知的解决方案,并在博客中介绍了该过程:http://samuli.hakoniemi.net/how-to-implement-safari-push-notifications-on-your-website/

...点击“订阅”时,它应该在 OSX 10.9.x 上启用 Safari 7.x 的推送通知。

推送通知适用于http://www.macrumors.com/,他们已经实现了它。但是,在我自己的测试网站上,我总是得到“拒绝”作为许可结果,而 Safari 甚至根本没有提示。

所以:我没有收到任何允许推送通知权限的提示,只是使用permissionData.denied 进行回调。

我从 SO 发现这个问题有类似的问题: Safari push notifications return denied without asking

但不幸的是,它没有给我任何建议。

【问题讨论】:

尝试访问hakoniemi.net/labs/push时出现“Safari 无法连接到服务器”错误 @Nick :这听起来“不错” - 因为服务器上当前不支持 https:。因此,您实际上看到了提示,并且在允许您收到通知之后? 我想我解决了这个问题 - 端点无效,因为它不是 https 并且没有提供正确的内容。起初我假设 .requestPermission() 不与服务器联系,而只是提示用户的浏览器 API。但事实上确实如此。 @zvona - 最好将解决方案发布为单独的“答案”,而不是作为“问题”的一部分。因此,对于以后遇到同样问题的其他人来说,答案会更加明显。 【参考方案1】:

在请求许可时,浏览器会联系下载您站点的推送包的端点。端点是 restFUL 并且必须通过“https”运行。自签名 SSL 证书不起作用。此外,推送包必须有效,才能提示用户。我的建议是让日志记录端点正常工作,这样您至少可以知道发生了什么以及失败的地方。

【讨论】:

以上是关于window.safari.pushNotification.requestPermission 总是返回“拒绝”的主要内容,如果未能解决你的问题,请参考以下文章