Selam arkadaşlar, ajax ile yeni sipariş geldiğinde bildirim sesi vermek istiyorum ama birazcık bu konuda bilgisiz olduğum için eksik yaptım sanırım pc cihazlar da zor'da olsa bildirim sesi alabiliyorum ama mobil cihazlarda bildirim sesi gelmiyor bu sorunu nasıl çözebilirim. Uygulama gibi tepki veren bir sistem yapmak istiyorum nasıl yaparım bilgisi olan varmı R10 gibi bir bildirim sistemi olsa bana yetiyor ajax her 5 saniyede 1 sorgu attığında yeni bildirim var ise bildirim sesi gelecek bu kadar bildirim sesi garson mutfak bu tür bölümlere gideceği için kritik bir öneme sahip.

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.