Pushpad: приглашение подписки появилось только в первый раз, когда пользователь нажимает кнопку включения в Chrome - PullRequest
0 голосов
/ 07 ноября 2018

Hello

Я уже проверил ответы на вопрос PushPad: подписка удаляется после обновления сайта , но это мне не помогло.

Я создал кнопку подписки / отказа от подписки, следуя документ , и подсказка появляется в 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 голосов
/ 07 ноября 2018
  1. Убедитесь, что вы завернули весь свой код в $(function () { ... }, чтобы ваш код запускался при полной загрузке страницы, иначе ваш обработчик кликов может работать некорректно.
  2. Возможно, дело в том, что когда вы видите приглашение Firefox, вы нажимаете " Не сейчас " (вместо " Никогда не разрешать ", которое скрыто в меню ▼). Вот почему вы можете увидеть подсказку несколько раз. В других браузерах, таких как Chrome, по умолчанию выбрано « Block » (это постоянный блок, например « Никогда не разрешать »).
  3. Когда пользователь блокирует уведомления, вы не можете снова отобразить приглашение браузера из-за ограничений браузера ... однако существуют некоторые альтернативные решения. Например, вы можете отображать пользовательское приглашение столько раз, сколько хотите, а затем отображать приглашение браузера только в том случае, если пользователь говорит «да» на ваше пользовательское приглашение. См. этот пример . В противном случае вы можете отобразить подсказку только тем пользователям, которые заблокировали уведомления, с просьбой разблокировать уведомления. См. этот пример . Другой вариант - отобразить на странице кнопку, позволяющую пользователям подписываться на уведомления, когда они решат это сделать.
...