(async function () { const SENDER_ID = '140204589526' , API_KEY = 'AIzaSyC-lQBtmhMaLavwvc2-IsA7rBUKtkWxuiY' , PROJECT_ID = 'webpush-zdnet' , APP_ID = '1:140204589526:web:d0ca6d18cdfe1189cce477' const VAP_ID = "BMxLE6SBVJUO5w4hhOlRIzC8ihKf5mUPIbdK9LWc29WWX9OXZcXZuoDlyDuLSRb8UTyicNlwcSi-iKRJuMEI7SQ" if (!window.Notification) return const FIREBASE_SCRIPT = "https://www.gstatic.com/firebasejs/8.6.8/firebase-app.js" const MESSAGING_SCRIPT = "https://www.gstatic.com/firebasejs/8.6.8/firebase-messaging.js" const API_ENDPOINT = "https://push.asahiinteractive.com" function loadScript(src) { return new Promise(resolve => { const script = document.createElement("script") script.src = src script.onload = resolve document.body.appendChild(script) }) } function requestAPI(url, data) { return new Promise((resolve, reject) => { fetch(API_ENDPOINT + url, { method: 'post', mode: "cors", cache: "no-cache", headers: {"Accept": "application/json", "Content-Type": "application/json"}, body: JSON.stringify(data) }) .then(response => resolve(response.json())) .catch(reject) }) } function getToken() { return new Promise((resolve, reject) => { navigator.serviceWorker.getRegistration(window.__sw_script || "/firebase-messaging-sw.js") .then(reg => { return messaging.getToken({vapidKey: VAP_ID, serviceWorkerRegistration: reg}) }) .then(resolve) .catch(reject) }) } function registerWorker() { return new Promise((resolve, reject) => { navigator.serviceWorker.register(window.__sw_script || "/firebase-messaging-sw.js") .then(resolve) .catch(reject) }) } function requestPermission() { return new Promise((resolve, reject) => { if (Notification.permission === 'default') { Notification.requestPermission() .then(resolve) .catch(reject) } else { resolve(Notification.permission) } }) } function initPushNotification() { return new Promise((resolve, reject) => { requestPermission() .then(permission => { if (permission !== 'granted') resolve() return getToken() }) .then(token => { const currentToken = localStorage.getItem("PUSH_TOKEN") if (currentToken === token) resolve() localStorage.setItem("PUSH_TOKEN", token) return requestAPI("/token_register", { domain: location.host, token: token, ua: navigator.userAgent, memberId: _getCookie('_aicid') }) }) .then(resolve) .catch(reject) }) } await loadScript(FIREBASE_SCRIPT) await loadScript(MESSAGING_SCRIPT) firebase.initializeApp({ apiKey: API_KEY, projectId: PROJECT_ID, messagingSenderId: SENDER_ID, appId: APP_ID }) const messaging = firebase.messaging() await registerWorker() await initPushNotification() window._initPushNotification = initPushNotification window._getNotificationPermission = () => Notification.permission })()