You are viewing an old version of this content. View the current version.
Compare with Current
View Version History
Version 1
Next »
목차
개요
본 가이드는 Native 지면에서 추가적으로 제공하는 기능에 대하여 추가적으로 설명합니다. 필요에 따라 가이드를 참고하시어 더욱 고도화할 수 있습니다.
CTA(Call to action) 버튼 커스터마이징

BuzzAd iOS SDK 에서 제공하는 CTA 버튼의 UI 및 처리 로직을 사용하지 않고 구현할 수 있습니다. 버튼에 표기하는 문구는 사용자에게 광고 참여 상태를 알려야합니다. 다음과 같은 상황에 적절한 문구를 표기해야 사용자에게 생기는 오해를 방지할 수 있습니다.
다음은 광고의 상태에 따라 CTA 문구를 수정하는 예시입니다. 광고 참여 상태를 확인하는데 필요한 API는 하단에 기재하였습니다.
Objective-C
- (void)updateCtaButtonWithAd:(BABAd *)ad {
NSString *callToAction = ad.creative.callToAction;
double reward = ad.reward;
double totalReward = [ad getTotalReward];
BOOL isParticipated = [ad isParticipated];
BOOL isClicked = [ad isClicked];
BOOL isActionType = [ad isActionType];
if (isClicked && isActionType && isParticipated) {
_rewardIcon.image = nil;
_ctaLabel.text = @"참여 확인 중";
// LayoutConstraint 조정
...
} else {
if (totalReward > 0 && isParticipated) {
_rewardIcon.image = [UIImage imageNamed:@"ic_check"];
_ctaLabel.text = @"참여 완료";
// LayoutConstraint 조정
...
} else if (reward > 0) {
_rewardIcon.image = [UIImage imageNamed:@"ic_coin"];
_ctaLabel.text = [NSString stringWithFormat:@"+%d %@", (int)reward, callToAction];
// LayoutConstraint 조정
...
} else {
_rewardIcon.image = nil;
_ctaLabel.text = callToAction;
// LayoutConstraint 조정
...
}
}
}
Swift
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 = "참여 확인 중"
// LayoutConstraint 조정
...
} else {
if (totalReward > 0 && isParticipated) {
rewardIcon.image = UIImage(named: "ic_check")
ctaLabel.text = "참여 완료"
// LayoutConstraint 조정
...
} else if (reward > 0) {
rewardIcon.image = UIImage(named: "ic_coin")
ctaLabel.text = "\(Int(ad.reward))P \(callToAction)"
// LayoutConstraint 조정
...
} else {
rewardIcon.image = nil
ctaLabel.text = callToAction
// LayoutConstraint 조정
...
}
}
}
<광고 참여 상태를 확인하는데 필요한 API>
API | 설명 |
---|
totalReward
| 해당 광고에 할당된 총 리워드 양을 나타냅니다. 리워드 적립 주기가 지나지 않아 광고에 리워드가 할당되지 않는 경우에는 0으로 내려오게 됩니다. |
availableReward
| 해당 광고에 남아있는 총 리워드 양을 나타냅니다. 유저가 광고에서 특정 액션을 취하지 않아 받아가지 못한 리워드가 있을때 0보다 큰 값을 갖게됩니다. |
isParticipated
| 현재 할당 받은 광고들의 참여 상태를 sync하기 위한 값입니다. 광고 참여가 일어나면 해당 광고 및 메모리 상의 동일 광고들의 isParticipated값이 true로 바뀌며 onParticipate 콜백이 호출됩니다. |
isClicked
| 현재 할당 받은 광고의 클릭 여부를 나타내기 위한 값입니다. 광고를 클릭한 적이 있으면 true로 변경됩니다. 일부 액션형 광고의 경우 서버에서 참여 여부를 실시간으로 판단할 수 없습니다. 이 경우에는 isParticipated 값이 true가 아니므로, Click이 발생한 경우 “참여 확인 중” 이라는 CTA로 변경하여 유저 혼선을 줄일 수 있습니다. |
isActionType
| 참여형 광고의 경우 True 이며, 노출형 광고의 경우 False 입니다. |
한번에 여러 개의 광고 로드
WithSize
를 설정하여 loadAds
를 호출하면, 한 번의 광고 요청으로 여러 개의 광고를 할당받을 수 있습니다. 캐로셀형태와 같은 지면을 구현하는 경우 사용할 수 있습니다. 최대 10개까지 가능합니다.
다음은 여러 개의 광고를 로드하는 예시입니다.
Objective-C
BABAdLoader *adLoader = [[BABAdLoader alloc] initWithUnitId:@"YOUR_NATIVE_AD_UNIT_ID"];
[adLoader loadAdsWithSize:5 onSuccess:^(NSArray<BABAd *> * _Nonnull ads) {
NSLog(@"%d ads loaded!", ads.count);
} onFailure:^(NSError * _Nullable error) {
// 광고가 없을 경우 호출됩니다. error를 통해 발생한 error의 원인을 알 수 있습니다
}];
Swift
let adLoader = BABAdLoader(unitId: "YOUR_NATIVE_AD_UNIT_ID")
adLoader.loadAds(withSize: 5, onSuccess: { ads in
NSLog("%d ads loaded!", ads.count)
}, onFailure: { error in
// 광고가 없을 경우 호출됩니다. error를 통해 발생한 error의 원인을 알 수 있습니다
})