9d60ea8f12
CI / build (push) Failing after 12m3s
- ADS_ENABLED=false 플래그 추가(features.js) - 광고단위 미승인 + 데이터 안전 양식 단순화(광고 식별자 수집/제3자 공유 제거) - AdBanner showAd + App.vue showAds 양쪽 게이팅 → 앱/웹 광고 모두 미노출, 레이아웃 하단 광고 여백도 함께 제거 - 애드핏 승인 후 true 로 되돌리면 무료 회원 광고 재노출 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
1.5 KiB
Vue
51 lines
1.5 KiB
Vue
<script setup>
|
|
import { computed, onMounted, ref } from 'vue'
|
|
import { useAuthStore } from '@/stores/auth'
|
|
import { ADS_ENABLED } from '@/config/features'
|
|
|
|
// 카카오 애드핏 배너. 광고 기능이 켜져 있고 유료(PREMIUM) 회원이 아닐 때만 표시한다.
|
|
const props = defineProps({
|
|
unit: { type: String, default: 'DAN-n0I5XRBOwAdSFbEX' },
|
|
width: { type: Number, default: 728 },
|
|
height: { type: Number, default: 90 },
|
|
})
|
|
|
|
const auth = useAuthStore()
|
|
const showAd = computed(() => ADS_ENABLED && !auth.isPremium)
|
|
|
|
const host = ref(null)
|
|
const ADFIT_SRC = '//t1.kakaocdn.net/kas/static/ba.min.js'
|
|
|
|
onMounted(() => {
|
|
if (!showAd.value || !host.value) return
|
|
// SPA 에서 동적 삽입 시 애드핏이 인식하도록 ins 를 직접 만들고 로더를 다시 실행한다.
|
|
const ins = document.createElement('ins')
|
|
ins.className = 'kakao_ad_area'
|
|
ins.style.display = 'none'
|
|
ins.setAttribute('data-ad-unit', props.unit)
|
|
ins.setAttribute('data-ad-width', String(props.width))
|
|
ins.setAttribute('data-ad-height', String(props.height))
|
|
host.value.appendChild(ins)
|
|
|
|
const s = document.createElement('script')
|
|
s.type = 'text/javascript'
|
|
s.src = ADFIT_SRC
|
|
s.async = true
|
|
host.value.appendChild(s)
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<div v-if="showAd" ref="host" class="ad-banner" :style="{ minHeight: height + 'px' }"></div>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.ad-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 100%;
|
|
overflow: hidden; /* 좁은 화면에서 가로 넘침 방지 */
|
|
}
|
|
</style>
|