External ID 설정은 선택 사항이지만 권장됩니다. 이를 통해 여러 기기에서 사용자를 식별하고 백엔드와 동기화할 수 있습니다.ONESIGNAL_EXTERNAL_ID를 dataLayer에 푸시하기이 예제는 GTM이 ONESIGNAL_EXTERNAL_ID 변수(2단계에서 생성)를 통해 읽을 수 있도록 사용자 ID를 dataLayer에 푸시하는 방법을 보여줍니다.
HTML
복사
AI에게 묻기
<script> window.dataLayer = window.dataLayer || []; // 데이터베이스 또는 인증 시스템에서 사용자 ID를 가져옵니다. // 이것이 문자열 값인지 확인하세요. var userId = "your_user_id_here"; dataLayer.push({ ONESIGNAL_EXTERNAL_ID: String(userId), });</script>
External ID를 설정하는 GTM 태그 생성
태그 구성:
태그 이름: OneSignal – Set External ID
태그 유형: Custom HTML
Tag firing options: Once per page
Trigger:
OneSignalInitialized에 대한 사용자 정의 이벤트 트리거 생성(위의 OneSignal - Init 태그에서 설정) 그리고
선택적으로 페이지 로드 시 사용자 ID를 사용할 수 있음을 알고 있는 경우.
External ID를 설정하는 데 필요한 메서드는 OneSignal.login(externalId)이며, 여기서 externalId는 문자열입니다.{{ONESIGNAL_EXTERNAL_ID}}가 비어 있거나(GTM이 “undefined” / “null”로 대체한 경우) login 호출이 건너뛰어지고 External ID가 설정되지 않습니다. 이는 일반적인 GTM 타이밍 문제입니다.
복사
AI에게 묻기
<script> // OneSignalDeferred는 OneSignal SDK가 준비된 후에 실행되도록 보장합니다 window.OneSignalDeferred = window.OneSignalDeferred || []; window.OneSignalDeferred.push(function (OneSignal) { /* Google Tag Manager에서 External ID를 읽습니다. 이것은 GTM 변수(Data Layer Variable 또는 Custom JS Variable)여야 합니다. */ var externalId = "{{ONESIGNAL_EXTERNAL_ID}}"; console.log("[OneSignal] raw external ID from GTM:", externalId); /* 기본 유효성 검사: - GTM은 undefined/null을 문자열로 대체할 수 있습니다 - OneSignal.login은 문자열이 필요합니다 */ if (!externalId || externalId === "undefined" || externalId === "null") { console.log("[OneSignal] External ID missing, skipping login"); return; } // External ID가 깨끗한 문자열인지 확인 externalId = String(externalId).trim(); console.log("[OneSignal] Calling OneSignal.login with External ID:", externalId); /* External ID를 사용하여 사용자를 OneSignal에 로그인합니다. 이렇게 하면 현재 브라우저/기기가 이 사용자에 연결됩니다. */ OneSignal.login(externalId) .then(function () { console.log("[OneSignal] External ID set successfully:", externalId); }) .catch(function (e) { console.log("[OneSignal] Failed to set External ID", e); }); });</script>