У меня впервые возникла проблема с push-уведомлениями PWA.
Это страница чата, созданная с помощью PHP.
Мои push-уведомления отправляются нормально (на телефоне и в сети). У меня есть push-уведомление.
Но есть проблема с форматом полученного уведомления.
Я получил текст уведомления в таком формате:
{
"title":"Nouveau message de Maman",
"body":"Test",
"icon":"/icons/icone-app-72.png",
"url":"/messagerie.php"
}
Но вот что я хочу получить:
Новое послание мамы
Тест
Значки приложения и ссылка при нажатии на уведомление
Кажется это своего рода проблема синтаксического анализа, но я понятия не имею, в чем может быть проблема. ни как ее решить.
Полезная нагрузка кажется проблемой, потому что, когда я пытаюсь отправить только функцию, а не передавать информацию о полезной нагрузке, все в порядке.
Может ли кто-нибудь мне помочь?
$stmt = $pdo->prepare("SELECT endpoint, p256dh, auth FROM subscriptions WHERE user_id = ?");
$stmt->execute([$destinataire_id]);
$subscriptionData = $stmt->fetch(PDO::FETCH_ASSOC);
if ($subscriptionData) {
$subscription = Subscription::create([
'endpoint' => $subscriptionData['endpoint'],
'keys' => [
'p256dh' => $subscriptionData['p256dh'],
'auth' => $subscriptionData['auth'],
],
]);
$webPush = new WebPush([
'VAPID' => [
'subject' => 'mailto:no-reply@famillecoing.fr',
'publicKey' => VAPID_PUBLIC_KEY,
'privateKey' => VAPID_PRIVATE_KEY,
],
]);
// Payload spécifique pour la messagerie
$payload = json_encode([
'body' => 'Vous avez un nouveau message de ' . htmlspecialchars($_SESSION['nom']),
'icon' => '/icons/icone-app-72.png',
'url' => '/messagerie.php?utilisateur_id=' . $_SESSION['user_id'],
]);
$webPush->queueNotification($subscription, $payload);
foreach ($webPush->flush() as $report) {
if (!$report->isSuccess()) {
error_log("Erreur d'envoi (messagerie) : " . $report->getReason());
}
}
}
А вот мой sw.js (работники служб)
self.addEventListener('push', (event) => {
console.log('Notification reçue.');
let data = {
body: 'Tu as une nouvelle notification.',
icon: '/icons/icone-app-72.png',
url: '/notifications.php', // URL par défaut pour redirection
};
try {
// Extraire les données envoyées par le serveur (si présentes)
if (event.data) {
const payload = event.data.json();
data = {
body: payload.body || data.body,
icon: payload.icon || data.icon,
url: payload.url || data.url,
};
}
} catch (error) {
console.error('Erreur lors du traitement du payload:', error);
}
const options = {
body: data.body,
icon: data.icon,
data: { url: data.url },
};
event.waitUntil(self.registration.showNotification('Notification', options));
});
self.addEventListener('notificationclick', (event) => {
event.notification.close();
if (event.notification.data && event.notification.data.url) {
event.waitUntil(clients.openWindow(event.notification.data.url));
}
});
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-and-json
Полезная нагрузка PWA и JSON ⇐ Php
Кемеровские программисты php общаются здесь
1735395391
Anonymous
У меня впервые возникла проблема с push-уведомлениями PWA.
Это страница чата, созданная с помощью PHP.
Мои push-уведомления отправляются нормально (на телефоне и в сети). У меня есть push-уведомление.
Но есть проблема с форматом полученного уведомления.
Я получил текст уведомления в таком формате:
{
"title":"Nouveau message de Maman",
"body":"Test",
"icon":"/icons/icone-app-72.png",
"url":"/messagerie.php"
}
Но вот что я хочу получить:
Новое послание мамы
Тест
Значки приложения и ссылка при нажатии на уведомление
Кажется это своего рода проблема синтаксического анализа, но я понятия не имею, в чем может быть проблема. ни как ее решить.
Полезная нагрузка кажется проблемой, потому что, когда я пытаюсь отправить только функцию, а не передавать информацию о полезной нагрузке, все в порядке.
Может ли кто-нибудь мне помочь?
$stmt = $pdo->prepare("SELECT endpoint, p256dh, auth FROM subscriptions WHERE user_id = ?");
$stmt->execute([$destinataire_id]);
$subscriptionData = $stmt->fetch(PDO::FETCH_ASSOC);
if ($subscriptionData) {
$subscription = Subscription::create([
'endpoint' => $subscriptionData['endpoint'],
'keys' => [
'p256dh' => $subscriptionData['p256dh'],
'auth' => $subscriptionData['auth'],
],
]);
$webPush = new WebPush([
'VAPID' => [
'subject' => 'mailto:no-reply@famillecoing.fr',
'publicKey' => VAPID_PUBLIC_KEY,
'privateKey' => VAPID_PRIVATE_KEY,
],
]);
// Payload spécifique pour la messagerie
$payload = json_encode([
'body' => 'Vous avez un nouveau message de ' . htmlspecialchars($_SESSION['nom']),
'icon' => '/icons/icone-app-72.png',
'url' => '/messagerie.php?utilisateur_id=' . $_SESSION['user_id'],
]);
$webPush->queueNotification($subscription, $payload);
foreach ($webPush->flush() as $report) {
if (!$report->isSuccess()) {
error_log("Erreur d'envoi (messagerie) : " . $report->getReason());
}
}
}
А вот мой sw.js (работники служб)
self.addEventListener('push', (event) => {
console.log('Notification reçue.');
let data = {
body: 'Tu as une nouvelle notification.',
icon: '/icons/icone-app-72.png',
url: '/notifications.php', // URL par défaut pour redirection
};
try {
// Extraire les données envoyées par le serveur (si présentes)
if (event.data) {
const payload = event.data.json();
data = {
body: payload.body || data.body,
icon: payload.icon || data.icon,
url: payload.url || data.url,
};
}
} catch (error) {
console.error('Erreur lors du traitement du payload:', error);
}
const options = {
body: data.body,
icon: data.icon,
data: { url: data.url },
};
event.waitUntil(self.registration.showNotification('Notification', options));
});
self.addEventListener('notificationclick', (event) => {
event.notification.close();
if (event.notification.data && event.notification.data.url) {
event.waitUntil(clients.openWindow(event.notification.data.url));
}
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79301263/pwa-payload-and-json[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия