推板:仅在用户第一次单击Chrome上的启用按钮时出现订阅提示

时间:2018-11-07 12:03:59

标签: google-chrome web-push pushpad

你好

我已经检查了问题PushPad: Subscribe is removed after site refresh的答案,但没有帮助我。

我在doc之后创建了一个订阅/取消订阅按钮,每次单击订阅按钮时,提示都会显示在Firefox上,所以我猜我的流程是正确的,但是我不明白为什么无法在Chrome上运行=>提示仅显示我首次启动Chrome的时间。

这是我的工作

pushpad('init', #projectID);
var pushId = $("#main").data("pushid");
var pushSig = $("#main").data("pushsig");

var updateButton = function (isSubscribed) {
    var btn = $('#activate-push-notif');
    if (isSubscribed) {
        btn.html('Unsubscribe');
        btn.addClass('subscribed');
    } else {
        btn.html('Subscribe');
        btn.removeClass('subscribed');
    }
};
// check whether the user is subscribed to the push notifications and
// initialize the button status (e.g. display Subscribe or Unsubscribe)
pushpad('status', updateButton);

// when the user clicks the button...
$('#activate-push-notif').on('click', function (e) {
    e.preventDefault();

    // if he wants to unsubscribe
    if ($(this).hasClass('subscribed')) {
        pushpad('unsubscribe', function () {
            updateButton(false);
        }, {
            uid: pushId,
        });

        // if he wants to subscribe
    } else {
        // try to subscribe the user to push notifications
        pushpad('subscribe', function (isSubscribed) {
            if (isSubscribed) {
                updateButton(true);
            } else {
                updateButton(false);
                alert('You have blocked notifications from your browser preferences.');
            }
        }, {
            uid: pushId,
            uidSignature: pushSig
        });
    }
});

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  1. 确保将所有代码包装在$(function () { ... }中,以便在页面完全加载后运行代码,否则您的点击处理程序可能无法正常工作。
  2. 可能的意思是,当您看到Firefox提示符时,单击“ 不立即”(而不是隐藏在▼菜单下的“ 绝不允许”)。这就是为什么您可以多次看到提示的原因。在其他浏览器(例如Chrome)中,默认选项为“ 阻止”(这是一个永久性阻止,例如“ 禁止允许”)。
  3. 当用户阻止通知时,由于浏览器的限制,您将无法再次显示浏览器提示...但是,有一些替代解决方案。例如,您可以根据需要多次显示自定义提示,然后仅在用户对自定义提示说“是”时显示浏览器提示。参见this example。否则,您只能向阻止通知的用户显示提示,要求取消阻止通知。参见this example。另一种选择是在页面上显示一个按钮,以允许用户在决定这样做时订阅通知。