Я занимаюсь ремеслом django-push-notifications
, а затем google tutorial.Отсутствие связи данных между django-push-уведомлениями и Service Worker
Мой текущий статус - это сеть, которая, похоже, работает и регистрируется и запрашивает разрешения на уведомления и т. Д. Я бегу через ./manage.py runserver
и используя localhost:8000
. Работник службы работает в настоящее время (как и ожидалось?). Когда я выполняю команду device.send_message("Hello world")
(через модуль push_notification
), я вижу, что я получаю event
в приложении Javascript. В настоящее время тестирование в Chrome я планирую адаптировать для Android.
Независимо от того, что я пытаюсь, event.data
всегда Null
. Я попытался отправить обычные сообщения, структурированные сообщения и аргумент ключевого слова extra
для метода send_message
без везения.
Я предполагаю, что у меня что-то не хватает?
Отрывки, что я бегу (неполное, но не уверен, что имеет отношение)
# Trigger push notifications
device = GCMDevice.objects.all()
device.send_message(<some data here>, extra=<some data here>)
И относительно Javascript в службе Worker:
self.addEventListener('push', function(event) {
console.log('Push message', event);
var data = {};
if (event.data) {
data = event.data.json();
}
console.log('Push data', data);
...
Что касается по настройке и регистрации :
navigator.serviceWorker.register('/sw.js').then(function() {
return navigator.serviceWorker.ready;
}).then(function (serviceWorkerRegistration) {
return serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true})
}).then(function (pushSubscription) {
// Last part of the URL is indeed the Registration ID for the GCM
var reg_id = pushSubscription.endpoint.split('/').pop();
console.log('Subscribed! Endpoint:', reg_id);
// Send the registration_id, which is the only required field
return $http({
method: "POST",
url: "{% url 'api:gcmdevice-list' %}",
data: {registration_id: reg_id}
});
}).catch(function (error) {
console.log('Service Worker Error:', error);
});
Каков правильный способ передачи информации из Django к уведомлению?
Вы проверили, что 'event.data' является' null'? Возможно, вызов '.json()' возвращает 'null'? Можете ли вы попробовать сделать 'event.date.text()' вместо этого? – Salva
С консоли Chrome я вижу, что 'event.data' является' null', с самого начала. – MariusSiuram
Я думаю, что что-то не так с реализацией, вы можете попробовать [django-webpush] (https://github.com/safwanrahman/django-webpush)? – Salva