Web SDK용 후크 모니터링
Adobe Experience Platform Web SDK에는 다양한 시스템 이벤트를 모니터링하는 데 사용할 수 있는 모니터링 후크가 포함되어 있습니다. 이러한 도구는 고유한 디버깅 도구를 개발하고 Web SDK 로그를 캡처하는 데 유용합니다.
Web SDK는 디버깅을 사용했는지 여부에 관계없이 모니터링 함수를 트리거합니다.
onInstanceCreated
onInstanceCreated
이 콜백 함수는 새 웹 SDK 인스턴스를 성공적으로 만든 경우 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onInstanceCreated(data) {
// data.instanceName
// data.instance
}
data.instanceName
data.instance
onInstanceConfigured
onInstanceConfigured
이 콜백 함수는 configure
명령이 정상적으로 확인될 때 웹 SDK에 의해 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onInstanceConfigured(data) {
// data.instanceName
// data.config
}
data.instanceName
onBeforeCommand
onBeforeCommand
이 콜백 함수는 다른 명령이 실행되기 전에 Web SDK에 의해 트리거됩니다. 이 함수를 사용하여 특정 명령의 구성 옵션을 검색할 수 있습니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onBeforeCommand(data) {
// data.instanceName
// data.commandName
// data.options
}
data.instanceName
data.commandName
data.options
onCommandResolved
onCommandResolved
이 콜백 함수는 명령 약속을 해결할 때 트리거됩니다. 이 함수를 사용하여 명령 옵션과 결과를 확인할 수 있습니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onCommandResolved(data) {
// data.instanceName
// data.commandName
// data.options
// data.result
},
data.instanceName
data.commandName
data.options
data.result
onCommandRejected
onCommandRejected
이 콜백 함수는 명령 약속이 거부되기 전에 트리거되며 명령이 거부된 이유에 대한 정보를 포함합니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onCommandRejected(data) {
// data.instanceName
// data.commandName
// data.options
// data.error
}
data.instanceName
data.commandName
data.options
data.error
fetch
)입니다.onBeforeNetworkRequest
onBeforeNetworkRequest
이 콜백 함수는 네트워크 요청이 실행되기 전에 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onBeforeNetworkRequest(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
}
data.instanceName
data.requestId
requestId
입니다.data.url
data.payload
POST
메서드를 통해 JSON 형식으로 변환되고 요청 본문으로 전송되는 네트워크 요청 페이로드 개체입니다.onNetworkResponse
onNetworkResponse
이 콜백 함수는 브라우저가 응답을 받을 때 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onNetworkResponse(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.body
// data.parsedBody
// data.status
// data.retriesAttempted
}
data.instanceName
data.requestId
requestId
입니다.data.url
data.payload
POST
메서드를 통해 JSON 형식으로 변환되고 요청 본문으로 전송되는 페이로드 개체입니다.data.body
data.parsedBody
data.status
data.retriesAttempted
onNetworkError
onNetworkError
이 콜백 함수는 네트워크 요청이 실패할 때 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onNetworkError(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.error
},
data.instanceName
data.requestId
requestId
입니다.data.url
data.payload
POST
메서드를 통해 JSON 형식으로 변환되고 요청 본문으로 전송되는 페이로드 개체입니다.data.error
fetch
)입니다.onBeforeLog
onBeforeLog
이 콜백 함수는 웹 SDK가 콘솔에 모든 항목을 기록하기 전에 트리거됩니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onBeforeLog(data) {
// data.instanceName
// data.componentName
// data.level
// data.arguments
}
data.instanceName
data.componentName
data.level
log
, info
, warn
, error
.data.arguments
onContentRendering
onContentRendering
이 콜백 함수는 다양한 렌더링 단계에서 personalization
구성 요소에 의해 트리거됩니다. 페이로드는 status
매개 변수에 따라 다를 수 있습니다. 함수 매개 변수에 대한 자세한 내용은 아래 샘플을 참조하십시오.
onContentRendering(data) {
// data.instanceName
// data.componentName
// data.payload
// data.status
}
data.instanceName
data.componentName
data.payload
POST
메서드를 통해 JSON 형식으로 변환되고 요청 본문으로 전송되는 페이로드 개체입니다.data.status
personalization
구성 요소가 렌더링 상태를 Web SDK에 알립니다. 지원되는 값:
rendering-started
: 웹 SDK에서 제안을 렌더링하려고 함을 나타냅니다. Web SDK에서 결정 범위나 보기를 렌더링하기 전에data
개체에서personalization
구성 요소와 범위 이름으로 렌더링하려는 제안을 볼 수 있습니다.no-offers
: 요청된 매개 변수에 대해 페이로드가 수신되지 않았음을 나타냅니다.rendering-failed
: 웹 SDK에서 제안을 렌더링하지 못했음을 나타냅니다.rendering-succeeded
: 결정 범위에 대한 렌더링이 완료되었음을 나타냅니다.rendering-redirect
: 웹 SDK에서 리디렉션 제안을 렌더링함을 나타냅니다.
onContentHiding
onContentHiding
이 콜백 함수는 사전 숨김 스타일이 적용되거나 제거될 때 트리거됩니다.
onContentHiding(data) {
// data.instanceName
// data.componentName
// data.status
}
data.instanceName
data.componentName
data.status
personalization
구성 요소가 렌더링 상태를 Web SDK에 알립니다. 지원되는 값:
hide-containers
show-containers
NPM 패키지를 사용할 때 모니터링 후크를 지정하는 방법 specify-monitoris-npm
NPM 패키지를 통해 Web SDK를 사용하는 경우 아래와 같이 createInstasnce
함수에 모니터링 후크를 지정할 수 있습니다.
var monitor = {
onBeforeCommand(data) {
console.log(data);
},
...
};
var alloyLibrary = require("@adobe/alloy");
var alloy = alloyLibrary.createInstance({ name: "alloy", monitors: [monitor] });
alloy("config", { ... });
alloy("sendEvent", { ... });
예 example
Web SDK는 전역 변수 __alloyMonitors
에서 개체 배열을 찾습니다.
모든 웹 SDK 이벤트를 캡처하려면 페이지에서 웹 SDK 코드가 로드되기 전에 모니터링 후크를 정의해야 합니다. 각 모니터링 메서드는 웹 SDK 이벤트를 캡처합니다.
페이지에 웹 SDK 코드가 로드되는 모니터링 후크를 후 에 정의할 수 있지만 페이지 로드 전에 트리거된 모든 후크는 캡처되지 않습니다.
모니터링 후크 개체를 정의할 때 특수 논리를 정의할 메서드만 정의하면 됩니다.
예를 들어 onContentRendering
에만 신경쓰는 경우 해당 메서드를 정의할 수 있습니다. 한 번에 모든 모니터링 후크를 사용할 필요는 없습니다.
여러 모니터링 후크 객체를 정의할 수 있습니다. 해당 이벤트가 트리거될 때 지정된 메서드가 있는 모든 개체가 호출됩니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.__alloyMonitors = window.__alloyMonitors || [];
window.__alloyMonitors.push({
onInstanceCreated(data) {
// data.instanceName
// data.instance
},
onInstanceConfigured(data) {
// data.instanceName
// data.config
},
onBeforeCommand(data) {
// data.instanceName
// data.commandName
// data.options
},
// Added in version 2.4.0
onCommandResolved(data) {
// data.instanceName
// data.commandName
// data.options
// data.result
},
// Added in version 2.4.0
onCommandRejected(data) {
// data.instanceName
// data.commandName
// data.options
// data.error
},
onBeforeNetworkRequest(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
},
onNetworkResponse(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.body
// data.parsedBody
// data.status
// data.retriesAttempted
},
onNetworkError(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.error
},
onBeforeLog(data) {
// data.instanceName
// data.componentName
// data.level
// data.arguments
}
onContentRendering(data) {
// data.instanceName
// data.componentName
// data.payload
// data.status
},
onContentHiding(data) {
// data.instanceName
// data.componentName
// data.status
}
});
</script>
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n[o].q.push([i,l,u])})},n[o].q=[])})}
(window,["alloy"]);
</script>
<script src="alloy.js" async></script>
</head>
<body>
<h1>Monitor Test</h1>
</body>
</html>