본문으로 건너뛰기

광고 중복 제어

페이지에 여러개의 광고 슬롯이 있을 때 각각의 광고 슬롯은 독립적으로 요청되기 때문에 동일한 광고가 노출될 수 있습니다.

동일한 광고를 제공하고 싶지 않을 때 중복 제어를 적용하여 중복된 광고를 제공하지 않을 수 있습니다.

1. 중복 제어 설정

1-1. 중복 제어 매니저 생성

  • gladsdk.setAdDeduplication()을 사용하여 중복 제어를 설정하고 중복 제어 매니저를 생성할 수 있습니다.

    • dedupReqId: 중복 제어 매니저를 식별하기 위한 ID
    • maxDedupReqCount: 중복 제어를 적용할 광고 슬롯의 개수 - 1
    var dedupReqId = 'deduplicationReuqestId';
    var maxDedupReqCount = 5; // 6개의 슬롯에 중복 제어가 적용됩니다.

    var adDedupManager = window.gladsdk.setAdDeduplication(dedupReqId, maxDedupReqCount);
  • gladsdk.setGlobalConfig()를 사용하여 maxDedupReqCount의 기본값을 설정할 수 있습니다.

    setAdDeduplication 전달값 > 전역 설정 순서대로 우선순위를 가집니다.

    아래에서 생성된 중복 제어 매니저의 중복 제어가 적용되는 슬롯 개수는 6개 입니다.

    window.gladsdk.setGlobalConfig({
    maxDedupReqCount: 3,
    });

    var dedupReqId = 'deduplicationReuqestId';
    var maxDedupReqCount = 5; // 6개의 슬롯에 중복 제어가 적용됩니다.
    var adDedupManager = window.gladsdk.setAdDeduplication(dedupReqId, maxDedupReqCount);

1-2. 광고 중복 제어 해제

  • gladsdk.clearAdDeduplication()을 사용하여 중복 제어를 해제할 수 있습니다.

    var dedupReqId = 'deduplicationReuqestId';
    window.gladsdk.clearAdDeduplication(dedupReqId);

2. 중복 제어 광고 노출

2-1. 중복 제어 광고 노출하기

var adSlot1 = window.gladsdk.defineAdSlot(adSlotInfo1);
var adSlot2 = window.gladsdk.defineAdSlot(adSlotInfo2);

adDedupManager.displayAds([adSlot1, adSlot2]);
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello NAM</title>
<script async src="https://ssl.pstatic.net/tveta/libs/glad/prod/gfp-core.js"></script>
<script>
window.gladsdk = window.gladsdk || { cmd: [] };
</script>
</head>

<body>
<div id="division_1"></div>
<div id="division_2"></div>
<div id="division_3"></div>
<script>
var adSlotInfo1 = {
adUnitId: 'WEB_nw_banner-N345765840',
adSlotElementId: 'division_1',
};
var adSlotInfo2 = {
adUnitId: 'WEB_nw_banner-N345765840',
adSlotElementId: 'division_2',
};
var adSlotInfo3 = {
adUnitId: 'WEB_nw_banner-N345765840',
adSlotElementId: 'division_3',
};

window.gladsdk.cmd.push(function () {
var adSlot1 = window.gladsdk.defineAdSlot(adSlotInfo1);
var adSlot2 = window.gladsdk.defineAdSlot(adSlotInfo2);
var adSlot3 = window.gladsdk.defineAdSlot(adSlotInfo3);

var adDedupManager = gladsdk.setAdDeduplication('deduplicationReuqestId', 2);
adDedupManager.displayAds([adSlot1, adSlot2, adSlot3]);
});
</script>
</body>
</html>

2-2. 중복 제어 광고 복원하기

중복 제어 광고 복원은 Persist 모드가 적용된 경우에만 동작합니다.

  • adDeduplicationManager.restoreAds()를 사용하여 중복 제어 매니저에 요청했던 광고 슬롯을 복원할 수 있습니다.

    주의

    restoreAds는 Persist 모드가 적용된 페이지에서 다른 페이지로 이동한 뒤 뒤로가기로 복귀했을 때 기존 광고를 복원하는 기능입니다.

    매체에서 뒤로가기로 인해서 페이지가 로딩되었는지 분기 처리가 필요합니다.
    첫 렌더링 시에는 adDeduplicationManager.displayAds()로 광고를 렌더링 해야하고
    복귀 이후에는 adDeduplicationManager.restoreAds()가 호출 되어야 합니다.

    var adSlot = window.gladsdk.findAdSlot('division');
    adDedupManager.restoreAds([adSlot]);
  • adDeduplicationManager.restoreAds()에 인자를 넘기지 않을 경우 해당 중복 제어 매니저를 통해 노출된 모든 광고 슬롯을 복원합니다.

    var adSlot1 = window.gladsdk.defineAdSlot(adSlotInfo1);
    var adSlot2 = window.gladsdk.defineAdSlot(adSlotInfo2);
    adDedupManager.displayAds([adSlot1, adSlot2]); // 중복제어 매니저를 통해 노출

    var adSlot3 = window.gladsdk.defineAdSlot(adSlotInfo3);
    window.gladsdk.displayAd(adSlot3); // 중복제어 매니저를 통하지 않고 노출

    // -------------------------------------------------------

    adDedupManager.restoreAds(); // adSlot1, adSlot2만 복원됨
    주의

    SPA가 아닌 환경에서 뒤로가기로 복귀했을 때 페이지가 새로고침 되면 중복 제어 매니저는 이전 상태를 유지할 수 없습니다.

    때문에 뒤로가기 시 새로고침이 발생한다면 슬롯을 새로 생성하여 restoreAds()에 명시적으로 전달하여 광고를 복원해야합니다.

    중복 제어 복원 예시는 Examples - 중복 제어와 Persist 광고 복원을 참고해주세요.

SPA 환경에서의 광고 복원 예시

  • 뒤로가기 시 새로운 페이지를 불러오지 않으면 기존 생성된 슬롯과 중복 제어 매니저는 유지되기 때문에 슬롯과 중복 제어 매니저를 찾아서 사용합니다.

    var adSlotInfo1 = {
    adUnitId: 'WEB_nw_banner-N345765840',
    adSlotElementId: 'division_1',
    };
    var adSlotInfo2 = {
    adUnitId: 'WEB_nw_banner-N345765840',
    adSlotElementId: 'division_2',
    };

    window.gladsdk.cmd.push(function () {
    var adSlot1 = window.gladsdk.findAdSlot('division_1');
    var adSlot2 = window.gladsdk.findAdSlot('division_2');

    var adDedupManager = window.gladsdk.findAdDedupManager('deduplicationReuqestId');
    adDedupManager.restoreAds([adSlot1, adSlot2]);
    });
  • 뒤로가기 시 중복 제어 매니저를 통해 모든 광고 슬롯을 복원하려면 인자 없이 복원 함수를 호출합니다.

    window.gladsdk.cmd.push(function () {
    var adDedupManager = window.gladsdk.findAdDedupManager('deduplicationReuqestId');
    adDedupManager.restoreAds();
    });

3. 중복 제어 적용 여부 확인

  • 광고 요청 QueryString에 ba, bx 값이 추가되어있어야 합니다.

    • 중복 제어가 적용된 첫 번째 광고 슬롯의 요청에는 포함되지 않습니다.
    • 중복 제어가 적용된 두 번째 광고 슬롯의 요청부터 포함됩니다.
  • ba, bx값은 이전 광고 슬롯 요청의 ba, bx 값을 포함합니다.

    • 두 번째 슬롯의 ba, bx 값이 세 번째 슬롯의 ba, bx 값에 포함되어 있어야 합니다.