Copy import SwiftUI
import AdropAds
class AdropPopupAdWrapper: ObservableObject, AdropPopupAdDelegate, AdropPopupAdCloseDelegate {
@Published var isLoaded = false
var popupAd: AdropPopupAd?
init() {
popupAd = AdropPopupAd(unitId: "PUBLIC_TEST_UNIT_ID_POPUP_CENTER")
popupAd?.delegate = self
popupAd?.closeDelegate = self
}
func loadAd() {
popupAd?.load()
}
func showAd() {
guard let viewController = UIApplication.shared.currentWindow?.topViewControllerAdrop else {
return
}
popupAd?.show(fromRootViewController: viewController)
}
// AdropPopupAdDelegate
func onAdReceived(_ ad: AdropPopupAd) {
DispatchQueue.main.async {
self.isLoaded = true
}
}
func onAdFailedToReceive(_ ad: AdropPopupAd, _ error: AdropErrorCode) {
print("팝업 광고 로드 실패")
}
func onAdImpression(_ ad: AdropPopupAd) {
print("팝업 광고 노출")
}
func onAdClicked(_ ad: AdropPopupAd) {
print("팝업 광고 클릭")
}
func onAdDidDismissFullScreen(_ ad: AdropPopupAd) {
print("팝업 광고 닫기 완료")
loadAd() // 새로운 광고 로드
}
// AdropPopupAdCloseDelegate
func onClosed(_ ad: AdropPopupAd) {
print("팝업 광고 닫기")
}
func onDimClicked(_ ad: AdropPopupAd) {
print("팝업 광고 배경 클릭")
}
func onTodayOffClicked(_ ad: AdropPopupAd) {
print("오늘 하루 보지 않기 클릭")
}
}
struct ContentView: View {
@StateObject var popupAdWrapper = AdropPopupAdWrapper()
var body: some View {
VStack(spacing: 20) {
Button("팝업 광고 로드") {
popupAdWrapper.loadAd()
}
Button("팝업 광고 표시") {
popupAdWrapper.showAd()
}
.disabled(!popupAdWrapper.isLoaded)
if popupAdWrapper.isLoaded {
Text("팝업 광고가 로드되었습니다")
.foregroundColor(.green)
}
}
.padding()
}
}