Chrome 基于 GCM 推送通知的原生弹出检测
Chrome based GCM push notification native popup detection
我需要在 chrome 本机弹出窗口出现时更改网站上的短信,以允许从网站获取基于 chrome 的 GCM 推送通知。看截图。
据我所知,本机弹出窗口仅在为站点启用通知时第一次出现。但是如果假设有人第一次允许然后从站点禁用然后再次尝试启用它就不会出现。
所以我只需要添加一个签入代码就可以知道只有在弹出窗口出现时才有效。在这行代码上订阅 chrome GCM 通知时会出现此本机弹出窗口:
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true}).then(function(subscription) {
提前致谢。
您可以使用 Permissions API 并查询状态 "prompt"
特别是你可以这样做:
navigator.permissions.query({name:'notifications'}).then(function(result) {
if (result.status == 'prompt') {
// At this point you know that once you call pushManager.subscribe the
// Dialog will be shown.
}
});
权限的 MDN 页面 API 有更多详细信息
https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query
我需要在 chrome 本机弹出窗口出现时更改网站上的短信,以允许从网站获取基于 chrome 的 GCM 推送通知。看截图。
据我所知,本机弹出窗口仅在为站点启用通知时第一次出现。但是如果假设有人第一次允许然后从站点禁用然后再次尝试启用它就不会出现。
所以我只需要添加一个签入代码就可以知道只有在弹出窗口出现时才有效。在这行代码上订阅 chrome GCM 通知时会出现此本机弹出窗口:
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true}).then(function(subscription) {
提前致谢。
您可以使用 Permissions API 并查询状态 "prompt"
特别是你可以这样做:
navigator.permissions.query({name:'notifications'}).then(function(result) {
if (result.status == 'prompt') {
// At this point you know that once you call pushManager.subscribe the
// Dialog will be shown.
}
});
权限的 MDN 页面 API 有更多详细信息 https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query