Yardımcı olacaklara şimdiden teşekkür ederim.
$(document).ready(function () {
let audio = new Audio('audio/yeni.mp3');
let isAudioInitialized = false;
let lastCounts = JSON.parse(localStorage.getItem('lastCounts')) || {
beklemede: null,
hazirlaniyor: null,
hazir: null
};
let notificationQueue = [];
let isNotificationShowing = false;
if (Notification.permission !== "granted" && Notification.permission !== "denied") {
Notification.requestPermission().then(permission => {
if (permission === "granted") {
console.log("Bildirim izni verildi");
}
});
}
function initAudio() {
if (!isAudioInitialized) {
audio.play().then(() => {
audio.pause();
audio.currentTime = 0;
isAudioInitialized = true;
console.log("Ses sistemi başlatıldı");
}).catch(error => {
console.error("Ses başlatma hatası:", error);
});
}
}
function playNotificationSound() {
if (isAudioInitialized) {
audio.play().catch(error => {
console.error("Ses çalma hatası:", error);
});
} else {
initAudio();
}
}
function updateCount(action, elementId) {
$.ajax({
url: URL,
method: 'GET',
data: {
action: action
},
dataType: 'json',
success: function (response) {
let currentCount = response.count;
let statusKey = elementId.split('-')[1];
let element = $(`#${elementId}`);
if (response.status === false || currentCount === 0) {
if (element.length) {
element.text('');
element.removeClass('pyrz-icon');
}
} else {
if (element.length) {
element.text(currentCount).addClass('pyrz-icon');
} else {
$('<span></span>')
.attr('id', elementId)
.text(currentCount)
.addClass('pyrz-icon')
.appendTo('body');
}
let stat;
if (statusKey === 'hazir') {
stat = 'Teslim Edilecek Siparişler';
} else if (statusKey === 'hazirlaniyor') {
stat = 'Hazırlanacak Siparişler';
} else {
stat = 'Yeni Sipariş';
}
if (lastCounts[statusKey] === null || currentCount > lastCounts[statusKey]) {
queuePushNotification(`${stat} | Toplam: ${currentCount}`);
}
}
lastCounts[statusKey] = currentCount;
localStorage.setItem('lastCounts', JSON.stringify(lastCounts));
}
});
}
// Bildirim kuyruğu
function queuePushNotification(message) {
notificationQueue.push(message);
if (!isNotificationShowing) {
showNextNotification();
}
}
// Kuyruktaki bildirimi gösterme
function showNextNotification() {
if (notificationQueue.length > 0) {
isNotificationShowing = true;
const message = notificationQueue.shift();
const notification = $('#pushNotification');
notification.text(message);
notification.addClass('animate');
// Görsel bildirim gönder
showBrowserNotification(message);
setTimeout(() => {
notification.removeClass('animate');
isNotificationShowing = false;
showNextNotification();
}, 5000);
}
}
// Bildirim div'i ekle
if (!$('#pushNotification').length) {
$('body').append('<div id="pushNotification" class="push-notification"></div>');
}
// Ses sistemini başlatma girişimi
initAudio();
function updateAllCounts() {
updateCount('getBeklemedeCount', 'ntfy-beklemede');
updateCount('getHazirlaniyorCount', 'ntfy-hazirlaniyor');
updateCount('getHazirCount', 'ntfy-hazir');
}
// Düzenli aralıklarla güncelleme yap
setInterval(() => {
updateAllCounts();
}, 3000);
updateAllCounts();
function showBrowserNotification(message) {
if (Notification.permission === "granted") {
new Notification("Yeni Bildirim", {
body: message
});
playNotificationSound();
} else {
playNotificationSound();
}
}
});konuyla detaylı ilgilenen ve anlamayan arkadaşlara php kodlarını ve bildirim sisteminin tam işleyişini anlatabilirim.