【问题标题】:Can I install a service worker without permission of push notification?我可以在没有推送通知许可的情况下安装 service worker 吗?
【发布时间】:2017-10-18 06:23:06
【问题描述】:

当我编写这样的代码时,我会在向服务人员注册时获得通知权限。 我想在启动添加到主屏幕的应用程序后允许通知,所以我想在注册 Service Worker 时阻止显示通知权限,可以吗?

if ('serviceWorker' in navigator && 'PushManager' in window){
    navigator.serviceWorker.register(pathServiceWorker)
        .then(function(swReg){
            swReg.pushManager.subscribe({userVisibleOnly: true})
                .then(function(sub) {
                    console.log('endpoint:', sub.endpoint);
                }).catch(function(error){
                    console.error('subscribeError',error);
                });
        }).catch(function(error){
            console.error('ServiceWorkerError',error);
        });
} else {
    console.warn('Pushmessagingisnotsupported');
}

【问题讨论】:

    标签: push-notification permissions service-worker progressive-web-apps


    【解决方案1】:

    您可以查看此Handle Permission Denied 文档。您可以参考示例代码,了解如何在用户尚未订阅时禁用按钮。

    function updateBtn() {
      if (Notification.permission === 'denied') {
        pushButton.textContent = 'Push Messaging Blocked.';
        pushButton.disabled = true;
        updateSubscriptionOnServer(null);
        return;
      }
    
      if (isSubscribed) {
        pushButton.textContent = 'Disable Push Messaging';
      } else {
        pushButton.textContent = 'Enable Push Messaging';
      }
    
      pushButton.disabled = false;
    }
    

    【讨论】:

    • 感谢您的回答!我会在确认通知许可后尝试注册!
    • 我看到了一个“Handle Permission Denied”示例,并得到了解决方案提示。在提供的代码以外的地方有“订阅()”的地方,请求通知的许可。感谢您的帮助!
    • @aiosl - 你有解决方案吗?我不想向用户显示任何权限提示,但想发送通知。
    猜你喜欢
    • 2017-03-03
    • 2022-01-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多