Невозможно подписаться на уведомления Pushpad Safari

Я использую библиотеку Pushpad.xyz, и мои уведомления Chrome работают. В Firefox я вызываю pushpad('unsupported', callbackFunction), и callbackFunction успешно выполняется (еще одна ошибка, которую я выясняю отдельно, поскольку Firefox должен поддерживаться). Однако я не могу заставить работать уведомления Safari. Я ввел свои сертификаты разработчика Apple в соответствии с запросом в https://pushpad.xyz/docs/pushpad_pro_requirements.

pushpad('init', projectID);
pushpad('uid', signature);
pushpad('subscribe', function(isSubscribed) { alert(isSubscribed); });

pushpad('unsupported', function() { alert('Unsupported browser'); });

В Safari я не получаю обратный вызов для неподдерживаемого, и в документах говорится, что Safari поддерживается. Почему пишет, что пользователь (я) заблокировал уведомления для этого сайта? Обратный вызов «status» всегда возвращает false. Есть ли способ проверить правильность настройки сертификата Apple? Спасибо!


person Amy    schedule 16.06.2016    source источник


Ответы (1)


Проблема с Safari определенно связана с загрузкой push-пакета и его подписью.

Когда вызывается pushpad('subscribe'), Safari пытается загрузить «push-пакет» с серверов Pushpad и проверяет его целостность и подпись. Если происходит ошибка (например, проверка подписи не удалась), то у пользователя даже не запрашивается разрешение, и разрешение не granted (его значение остается default).

Итак, вы видите это странное сообщение о том, что пользователь не предоставил разрешение. На самом деле в вашем случае не пользователь блокирует уведомления: это Safari отказывается подписываться на push-уведомления, потому что push-пакет недействителен.

Попробуйте сгенерировать еще раз и исправьте закрытый ключ APNS и сертификат APNS в настройках отправителя на Pushpad. Это должно решить проблему.

Обязательно выполните шаги, описанные здесь для APNS: https://pushpad.xyz/docs/pushpad_pro_requirements.

Если вы тестируете свой веб-сайт локально, обязательно следуйте инструкциям, описанным в "Локальная работа". " раздел:

  • передать параметр hostname в init
  • убедитесь, что адрес в точности равен http://localhost (если вы используете, например, http://127.0.0.1).0.1 Safari не будет работать локально)
person collimarco    schedule 18.06.2016