JS (Sw.js) < /p>
self.addEventListener('push', function(event) {
console.log('
if (!(self.Notification && self.Notification.permission === 'granted')) {
console.error('
return;
}
event.waitUntil(
Promise.resolve().then(() => {
let data = {};
try {
data = event.data ? event.data.json() : {};
console.log('
} catch (error) {
console.warn('
data = { title: event.data.text(), body: event.data.text() };
}
const title = data.title || 'Notifica Generica';
const options = {
body: data.body || 'Hai una nuova notifica.',
icon: data.icon || 'my_icon',
badge: data.badge || 'my_badge',
image: data.image || undefined,
requireInteraction: data.requireInteraction || false,
data: data.data || {}
};
console.log('
return self.registration.showNotification(title, options);
}).catch((error) => {
console.error('
return self.registration.showNotification('Errore', {
body: 'Non è stato possibile recuperare i dati della notifica.',
icon: 'my_icon',
data: { click_action: '/' }
});
})
);
});
< /code>
php < /p>
function send_push_notification(
$title,
$body,
$icon = "",
$image = "",
$url = "",
$data = []
) {
global $wpdb;
$table_name = $wpdb->prefix . "pwa_push_subscriptions";
$subscriptions = $wpdb->get_results("SELECT * FROM $table_name");
if (empty($subscriptions)) {
pwa_write_log("
return;
} else {
pwa_write_log("
}
// Configura le chiavi VAPID
$auth = [
"VAPID" => [
"subject" => "mailto:noreply@nomesito.com",
"publicKey" => "my_key",
"privateKey" => "my_key",
],
];
$webPush = new WebPush($auth);
foreach ($subscriptions as $subscription) {
try {
$payload_array = [
"title" => $title,
"body" => $body,
"icon" => $icon ?: " my icon",
"image" => $image ?: null,
"badge" => "my_badge",
"requireInteraction" => true,
"data" => [
"click_action" => $url,
"url" => $url
]
];
$payload = json_encode($payload_array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
if (json_last_error() !== JSON_ERROR_NONE) {
pwa_write_log("
return;
}
$webPush->queueNotification(
Subscription::create([
"endpoint" => $subscription->endpoint,
"keys" => [
"p256dh" => $subscription->public_key,
"auth" => $subscription->auth_key,
],
]),
$payload
);
} catch (Exception $e) {
pwa_write_log("
}
}
foreach ($webPush->flush() as $report) {
$endpoint = $report->getRequest()->getUri();
if ($report->isSuccess()) {
pwa_write_log("
} else {
pwa_write_log("
}
}
}
< /code>
Журналы говорят, что библиотека была создана правильно, композитор также устанавливается правильно < /p>
Как я могу решить эту проблему? < /p >
Спасибо за помощь. < /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... k-web-push
Мобильная версия