let isOpen = false; document.addEventListener("DOMContentLoaded", function() { const url = new URL(document.location); const params = Object.fromEntries(url.searchParams.entries()); const path = url.pathname; const segments = path.split("/").filter(Boolean); // ["link", "touchclass"] const cpId = segments[1] ?? "touchclass"; const isIPHONE = /iPhone|iPad|iPod/.test(navigator.userAgent); const isANDROID = /Android/.test(navigator.userAgent); const isKakaoOrNaver = /KAKAOTALK|NAVER/.test(navigator.userAgent); function getOpenURL() { const scheme = getScheme(cpId); const query = new URLSearchParams(); if (params.attendanceId) { query.set("attendanceId", params.attendanceId); } else if (params.tokenkey) { //sso query.set("tokenkey", params.tokenkey); query.set("cp_id", params.cp_id); } else if (params.course_id) { if (params.course_id) query.set("course_id", params.course_id); if (params.curriculum_id) query.set("curriculum_id", params.curriculum_id); if (params.page_id) query.set("page_id", params.page_id); if (params.type) query.set("type", params.type); } else if (params.post_id) { query.set("post_id", params.post_id); } else if (params.notice_id) { query.set("notice_id", params.notice_id); } else if (params.live_id) { query.set("live_id", params.live_id); } else if (params.ttube_channel_id) { query.set("ttube_channel_id", params.ttube_channel_id); } else if (params.ttube_video_id) { query.set("ttube_video_id", params.ttube_video_id); } if (params.t){ query.set("t", params.t); } return `${scheme}://open?${query.toString()}`; } function openApp() { const openURL = getOpenURL(); const scheme = getScheme(cpId); if (!openURL && !scheme) return; const fallbackUrl = getFallbackUrl(cpId); if (isANDROID) { const package = getAndroidPackageName(cpId); const intentPath = openURL.split("://")[1]; let intentUrl = `intent://${intentPath}#Intent;scheme=${scheme};package=${package};`; if (fallbackUrl) { intentUrl += `S.browser_fallback_url=${encodeURIComponent(fallbackUrl)};`; } intentUrl += 'end;'; window.location.href = intentUrl; } else if (isIPHONE) { window.location.href = openURL; } isOpen = true; } if (isKakaoOrNaver) { setTimeout(openApp, 200); } else { openApp(); } document.addEventListener("visibilitychange", function () { if (isKakaoOrNaver && isIPHONE) { if (document.visibilityState === "visible") { if (!isOpen) { const answer = confirm("앱을 실행 하시겠습니까?"); if (answer) { openApp(); } } isOpen = false; } } }); }); function getFallbackUrl(cpId) { switch (cpId) { case "samsunglife": return "https://samsunglife.touchclass.com/member/install"; case "cjlogistics": return "https://smplus.touchclass.com/member/install"; case "aiatv": return "https://app.touchclass.com/install/aiatv/index.html"; case "aiatv1": return "https://app.touchclass.com/install/aiapp/index.html"; case "hansae": return "https://app.touchclass.com/install/hansae/index.html"; default: return ""; } } function getScheme(cpId) { switch (cpId) { case "touchclass": return "touchclass"; case "ecabinet": case "everland": return "touchclassecabinet"; case "samsunglife": return "touchclasssamsunglife"; case "cjlogistics": return "touchclasscjlogistics"; case "samsungfire": return "touchclasssamsungfire"; case "rcmove": return "touchclassrcmove"; case "aiatv": return "touchclassaiatv"; case "aiatv1": return "touchclassaiapp"; case "hansae": return "touchclasshansae"; default: return "touchclass"; } } function getAndroidPackageName(cpId) { switch (cpId) { case "touchclass": return "com.newin.touchclass"; case "ecabinet": case "everland": return "com.newin.touchclass.ecabinet"; case "samsunglife": return "com.newin.touchclass.samsunglife"; case "cjlogistics": return "com.newin.touchclass.cjlogistics"; case "samsungfire": return "com.newin.touchclass.samsungfire"; case "aiatv": return "com.newin.touchclass.aiatv"; case "aiatv1": return "com.newin.touchclass.aiapp"; case "hansae": return "com.hansae.communication"; default: return "com.newin.touchclass"; } }