2017-10-08 12 views
0

알림을 전송해야하는 웹 앱을 작성하고 있습니다. 30 초마다 12 가지 사항을 확인하고, 그 중 하나가 기준을 충족하면 알림을 보내야합니다. 그 다음 30 분 (시간과 반 과거 시간) 간격까지 다른 알림을 보내지 않아야합니다. 알림을 이미 보내고 다시 보내지 않는지 어떻게 확인합니까? 나는 이것이 태그를 통해 이루어 졌다고 생각했지만 동일한 태그를 사용하는 두 개의 알림은 여전히 ​​팝업으로 나타나고 두 번째 알림은 첫 번째 태그를 대체 할 것입니다.웹 알림 API - 기간별로 한 번만 표시

통지를 생성하기 위해 사용되는 함수는 함수가 30 초마다 Ajax를 통해로드 된 다른 스크립트 호출

function randomNotification(whoisit, tagtoPass) { 

    var message = whoisit + " is getting a notification"; 
    var options = { 
     body: message, 
     icon: 'logo.png', 
     tag: tagtoPass, 
    } 

    var n = new Notification('Website Says:',options); 
    setTimeout(n.close.bind(n), 5000); 
    } 

이다. 이 스크립트는 데이터베이스를 검사하여 12 가지 중 하나가 알림이 필요한 상태에 있는지 확인한 다음 해당 함수를 호출하고 30 분 간격으로 이름과 고유 태그를 전달합니다.

또한 알림 API의 Mozilla 개발자 문서를 기반으로 한이 코드는 OS X 알림 센터에 알림을 추가하지 않습니다.

+1

넌 (a 레디 스 로크를 이용할 수 http://blog.pushpad.xyz/2017/07/how-to -throttle-notifications-to-user-and-reduce-cost /) – collimarco

답변

1

마지막 알림을 보낸 시간을 저장하기 위해 localStorage에서 플래그를 사용 해본 적이 있습니까?

첫 번째 알림을 보낸 시간을 저장 한 다음 다시 확인하고 오래 걸리면 다른 알림을 보내고 해당 플래그를 업데이트한다고 가정 해 보겠습니다.

웹 페이지를 새로 고침해도 localStorage 데이터가 유지됩니다.

예 :

localStorage.setItem("last_notification", timestamp) 
localStorage.getItem("last_notification") 

참조 : 포스트]에 기재된 https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

+0

나는 그것을 고려했지만 알림을 사용하는 올바른 방법이 아니며 일부 기본 알림 API 솔루션을 사용해야한다고 생각했습니다. – jskrwyk