알짜게시판

애드센스 충돌 문제 해결하기

블로그 운영자라면 한 번쯤은 경험하는 문제가 있습니다. 바로 애드센스 광고가 정상적으로 뜨지 않거나, 콘솔에 에러가 발생하는 경우입니다. 특히 postMessage와 관련된 오류는 자바스크립트 코드와 애드센스 광고 스크립트가 충돌해서 발생할 수 있습니다. 이 글에서는 그 원인과 해결 방법을 정리했습니다.


애드센스 광고가 뜨지 않는 이유

애드센스 광고가 표시되지 않는 원인은 크게 두 가지로 나눌 수 있습니다.

  • 애드센스 계정, 정책, 광고 재고 문제로 인해 광고가 차단된 경우
  • 자바스크립트 코드에서 애드센스가 보내는 메시지를 잘못 처리해 충돌이 생기는 경우

첫 번째는 구글의 정책이나 계정 상태를 점검해야 하고, 두 번째는 우리가 직접 수정할 수 있습니다.


postMessage와 애드센스

애드센스는 광고를 iframe으로 불러옵니다. 이때 광고 스크립트는 postMessage API를 통해 브라우저와 통신합니다. 문제는 페이지에 등록된 message 이벤트 리스너가 이 메시지를 무조건 처리하려고 하면, 비JSON 데이터JSON.parse 하면서 에러가 발생한다는 점입니다. 이 때문에 광고가 중단되거나 화면에 노출되지 않는 현상이 생깁니다.


최종 코드

이 문제를 피하기 위해 메시지 수신 코드를 간단하게 작성할 수 있습니다. 출처(origin)를 체크해서 내 사이트가 보낸 메시지만 처리하도록 하는 방식입니다.

function recvApp(e)
{
    if (e.origin && e.origin !== window.location.origin) {
        return;
    }

    var json = JSON.parse(e.data);

    ...
}

window.addEventListener('message', recvApp);

코드 설명

  • if (e.origin && e.origin !== window.location.origin)
    현재 페이지의 출처와 다른 곳에서 보낸 메시지는 모두 무시합니다.
  • JSON.parse(e.data)
    메시지를 JSON 객체로 변환합니다. 내 사이트에서 보낸 메시지만 처리하도록 제한했기 때문에 충돌을 줄일 수 있습니다.

정리

애드센스와 같은 광고 스크립트는 기본적으로 postMessage를 사용합니다. 따라서 메시지 처리 코드를 작성할 때는 반드시 출처를 확인하고, 내 사이트에서 보낸 메시지만 다루는 것이 안전합니다. 위와 같이 코드를 수정하면 애드센스와의 충돌로 인한 오류를 막고 광고 노출 문제도 예방할 수 있습니다.

로그인 후 댓글내용을 입력해주세요

제목 글쓴이 조회 날짜
개발팁 네이버 검색 Open API 399 26-02-10
개발팁 네이버 검색광고 키워드 도구 API 검색 450 26-02-10
개발팁 MariaDB column_stats 테이블 오류 해결 방법 637 25-12-06
개발팁 PHP-FPM 에러 로그 실시간 모니터링 607 25-12-03
개발팁 다국어 번역 함수 구현 방법 2,993 25-11-08
개발팁 애드센스 충돌 문제 해결하기 74,436 25-09-20
개발팁 애드센스 자동 광고 사용 시 빈 화면이 출력된다면? 159,097 25-06-20
개발팁 검색 로봇 접속시 종료 57,083 24-10-07
개발팁 REQUEST 값 받기(application/json 포함) 99,922 24-04-20
개발팁 Porto 테마에서 포스팅만 Loading Overlay 58,856 24-03-08
개발팁 업데이트 이후 에러 발생([ERROR] Incorrect definition of tabl… 92,399 23-12-08
개발팁 MySQL, MariaDB 업데이트 74,166 23-11-24
개발팁 [RN] android directory was detected in the project… 66,106 23-07-20
개발팁 Curl 접속 속도가 늦은 경우 37,313 23-04-10
개발팁 unblock with 'mysqladmin flush-hosts' 에러 54,506 23-01-01
개발팁 Imagek 를 이용한 썸네일 생성 46,363 22-08-26
개발팁 파일 포맷 알아내기 46,097 22-08-23
개발팁 PHP 수정시 적용이 안되는 경우 해결 (opcache 중지) 36,048 21-03-31
개발팁 Curl 을 이용하여 파일 다운로드 6,624 21-01-19
개발팁 Curl 을 이용하여 json 을 post 보내기 7,236 21-01-19
개발팁 워드프레스와 그누보드 연동 모듈 4,339 20-12-27
개발팁 날짜필드 연장하기 2,548 20-03-20
개발팁 실시간 화면 출력 4,850 19-08-04
개발팁 계정 추가 및 외부 접속 허용 2,211 19-07-05
개발팁 변수를 텍스트로 저장 및 캐시로 사용하기 3,855 19-06-30
개발팁 지정 폴더 내 PHP 파일 최종 수정일 확인하기 2,792 19-06-20
개발팁 CDN 간단히 구축하기 3,490 19-05-21
개발팁 파일형 멀티(?) 카운터 20,738 07-08-31
목록
역사과학웹프로그래밍의료건강방수의신자기계발