var endpoint; var browserStr = navigator.userAgent.toLowerCase(); var browser='unknown'; if((browserStr.indexOf("opera") != -1) || (browserStr.indexOf('opr') != -1) ){ browser ='opera'; }else if(browserStr.indexOf("ubrowser") != -1 ) { browser ='ucbrowser'; } else if(browserStr.indexOf("chrome") != -1 ){ browser ='chrome'; }else if(browserStr.indexOf("safari") != -1){ browser ='safari'; }else if(browserStr.indexOf("firefox") != -1 ) { browser ='firefox'; }else if((browserStr.indexOf("msie") != -1 ) || (!!document.documentMode == true )) { browser ='ie'; }else{ browser ='unknown'; } function store_subscription(subscription){ if (typeof subscription == 'undefined') { console.log("subecription denied/ignored"); return; } endpoint = subscription.endpoint; var post = new XMLHttpRequest(); post.open('POST', '/register_subs.php'); endpointSections = endpoint.split('/'); subscriptionId = endpointSections[endpointSections.length - 1]; var curUrl = encodeURI(window.location.href); var refUrl = encodeURI(document.referrer); var jsn = subscription.toJSON(); //ref=> https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription var params = "endpoint=" + endpoint; params += "&subscriptionId=" + subscriptionId; params += "&browser=" + browser; params += "&curUrl=" + curUrl; params += "&refUrl=" + refUrl; params += "&p256dh=" + jsn.keys.p256dh; params += "&auth=" + jsn.keys.auth; console.log("saved data: "+params); post.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); post.send(params); return; } function Unsubscribe() { if(confirm("Are you sure to unsubscribe?")){ navigator.serviceWorker.getRegistration() .then(function(registration) { registration.unregister().then(function(e){ console.log('user unsubscribed', e); }); }); return true; }else{ return false; } } function addShadow(){ $('html, body').css({overflow: 'hidden', height: '100%'}); var docHeight = $(document).height(); $("#overlay").height(docHeight).show(); if(browser =='opera'){ $("#overlay").css("padding-left","45%").css("padding-top","170px") } } function removeShadow(){ $("#overlay").hide(); $('html, body').css({overflow: 'auto', height: 'auto'}); } function setCookie(cookieName, value, expDays) { var expDate = new Date(); expDate.setDate(expDate.getDate() + expDays); var c_value = escape(value) + ((expDays == null) ? "" : "; expires=" + expDate.toUTCString()); document.cookie = cookieName + "=" + c_value+"; path=/"; } navigator.serviceWorker.register('/service-worker.js') .then(function(registration) { if(registration.installing) { console.log('Service worker installing'); } else if(registration.waiting) { console.log('Waiting to respond the Service worker'); } else if(registration.active) { console.log('Service worker active'); } return registration.pushManager.getSubscription() .then(function(subscription) { //addShadow(); if(browser =='ucbrowser'){ // removeShadow(); } return registration.pushManager.subscribe({ userVisibleOnly: true }) .then(function(subscription) { console.log('subsciption : ',subscription); //removeShadow(); endpoint = subscription.endpoint; if(endpoint.length >50){ var jsn = subscription.toJSON(); setCookie('endpoint', endpoint, null); setCookie('browser', browser, null); setCookie('auth', jsn.keys.auth, null); setCookie('p256dh', jsn.keys.p256dh, null); } return store_subscription(subscription); }) .catch(function(e) { if (Notification.permission === 'denied') { console.warn('The user has blocked notifications.'); }else if(e.code == 0){ console.log("user closed/ignored the subscription request"); }else{ console.warn('Error during pushManager.subscribe()', e); } //removeShadow(); return e; }) }) });