class CustomAdViewHolder: BABAdViewHolder {
private var adView = BABNativeAdView()
private var mediaView = BABMediaView()
private var titleLabel = UILabel()
...
required init?(coder: NSCoder) {
super.init(coder: coder)
setUpView()
}
override init(frame: CGRect) {
super.init(frame: frame)
setUpView()
}
func setUpView() {
adView.delegate = self
addSubview(self.adView)
adView.addSubview(self.mediaView)
adView.addSubview(self.titleLabel)
...
// LayoutConstraint 설정
...
}
// Bind view with ad
override func renderAd(_ ad: BABAd) {
super.renderAd(ad)
self.titleLabel.text = ad.creative.title
self.descriptionLabel.text = ad.creative.body
if let urlString = ad.creative.iconUrl {
self.iconImageView.sd_setImage(with: URL(string: urlString))
}
self.adView.ad = ad
self.adView.mediaView = self.mediaView
self.adView.clickableViews = [self.ctaButton, self.iconImageView]
updateCtaButton(ad: ad)
}
func updateCtaButton(ad: BABAd) {
let callToAction = ad.creative.callToAction ?? "디폴트 스트링"
let reward = ad.reward
let totalReward = ad.getTotalReward()
let isParticipated = ad.isParticipated()
let isClicked = ad.isClicked()
let isActionType = ad.isActionType()
if (isClicked && isActionType && !isParticipated) {
rewardIcon.image = nil
ctaLabel.text = "참여 확인 중"
} else {
if (totalReward > 0 && isParticipated) {
rewardIcon.image = UIImage(named: "ic_check")
ctaLabel.text = "참여 완료"
} else if (reward > 0) {
rewardIcon.image = UIImage(named: "ic_coin")
ctaLabel.text = "\(Int(ad.reward))P \(callToAction)"
} else {
rewardIcon.image = nil
ctaLabel.text = callToAction
}
}
}
// MARK: BABNativeAdViewDelegate
func babNativeAdView(_ adView: BABNativeAdView, didImpress ad: BABAd) {
}
func babNativeAdView(_ adView: BABNativeAdView, didClick ad: BABAd) {
updateCtaButton(ad: ad)
}
func babNativeAdView(_ adView: BABNativeAdView, willRequestRewardFor ad: BABAd) {
}
func babNativeAdView(_ adView: BABNativeAdView, didRewardFor ad: BABAd, with result: BABRewardResult) {
updateCtaButton(ad: ad)
}
func babNativeAdView(_ adView: BABNativeAdView, didParticipateAd ad: BABAd) {
updateCtaButton(ad: ad)
}
} |