앱 UI에 진입 경로 추가
앱 화면의 아이콘, 버튼, 배너 등 레이아웃 UI에 뷰를 직접 구현하여 피드로 진입하는 경로를 만들 수 있습니다.
진입 경로를 생성할 수 있는 UI 컴포넌트의 예시는 아래 다이어그램을 참고하세요. 또한 샘플 앱에서 제공하는 다양한 커스텀 진입 경로들의 샘플 코드를 확인해 보세요.
준비 사항
- 피드 지면 기본 설정 완료
⚠️ 주의
진입 경로의 정상적인 동작을 위해서는 피드 지면 초기화 토픽의 설명에 따라 반드시BZVConfig
에BZVFeedConfig
를 추가해야 합니다.
진입 경로 추가하기
뷰 컨트롤러에 피드 진입 경로를 생성할 수 있습니다. 피드 진입 경로를 뷰 컨트롤러에 추가하려면 BZVFeedEntryView
를 상속받는 커스텀 뷰를 구현하고 하위 뷰로 추가하세요.
코드로 진입 경로 구현하기
다음은 코드로 BZVFeedEntryView
를 상속 받는 커스텀 뷰 클래스를 구현하고 뷰 컨트롤러의 하위 뷰로 추가하는 예시입니다.
BZVFeedEntryView
의 서브 클래스를 정의하여 레이아웃을 직접 구현하세요.
- Swift
- Objective-C
import BuzzAdBenefit
final class CustomFeedEntryView: BZVFeedEntryView {
let customSubview1 = UIView(frame: .zero)
let customSubview2 = UIView(frame: .zero)
required init?(coder: NSCoder) {
super.init(coder: coder)
setupView()
}
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
private func setupView() {
// subview 초기화 및 LayoutConstraint 설정
...생략...
// 클릭이 가능한 영역을 지정합니다.
clickableViews = [customSubview1, customSubview2]
}
}
@import BuzzAdBenefit;
@interface CustomFeedEntryView: BZVFeedEntryView
@end
@interface CustomFeedEntryView ()
@property (nonatomic, strong, readonly) UIView *customSubview1;
@property (nonatomic, strong, readonly) UIView *customSubview2;
@end
@implementation CustomFeedEntryView
- (instancetype)initWithCoder:(NSCoder *)coder {
if (self = [super initWithCoder:coder]) {
[self setupView];
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self setupView];
}
return self;
}
- (void)setupView {
// subview 초기화 및 LayoutConstraint 설정
...생략...
// 클릭이 가능한 영역을 지정합니다.
self.clickableViews = @[self.customSubview1, self.customSubview2];
}
@end
- 이전 단계에서 생성한
BZVFeedEntryView
의 서브 클래스(CustomFeedEntryView
)를 초기화하여 사용하세요.
- Swift
- Objective-C
import UIKit
final class ViewController: UIViewController {
private lazy var customFeedEntryView: CustomFeedEntryView = {
let view = CustomFeedEntryView(frame: .zero)
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(customFeedEntryView)
// LayoutConstraint 설정
...
}
}
@interface ViewController ()
@property (nonatomic, strong, readonly) CustomFeedEntryView *customFeedEntryView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_customFeedEntryView = [[CustomFeedEntryView alloc] initWithFrame:CGRectZero];
[self.view addSubview:_customFeedEntryView];
// LayoutConstraint 설정
...
}
@end
사용자 반응 추적하기
진입 경로를 생성한 후 setEntryName
을 추가해 뷰의 노출 수와 사용자 클릭 수를 추적할 수 있습니다. 사용자 반응 추적 기능을 사용하려면 setEntryName
을 구성하는 내용을 버즈빌 담당자에게 전달하세요.
✅ 중요
이 기능은 BuzzAd iOS용 SDK v3.1.x부터 추가할 수 있습니다. v3.1.x 미만의 버전을 연동한 경우 이 기능을 탑재하려면 v3.1.x 이상으로 업데이트하세요.
✏️ 참고
- 사용자 반응 추적 기능을 추가하기 전 데이터 관리 설정을 위해 버즈빌 담당자에게 연락하세요.
setEntryName
으로 들어가는your_custom_entry_point_1
값으로는icon
,icon_message
,banner
등 뷰를 설명할 수 있는 내용을 권장합니다.
- Swift
- Objective-C
import UIKit
final class ViewController: UIViewController {
private lazy var customFeedEntryView: CustomFeedEntryView = {
let view = CustomFeedEntryView(frame: .zero)
// 뷰에 대한 사용자 반응을 추적합니다.
view.setEntryName("your_custom_entry_point_1")
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(customFeedEntryView)
// LayoutConstraint 설정
...
}
}
@interface ViewController ()
@property (nonatomic, strong, readonly) CustomFeedEntryView *customFeedEntryView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_customFeedEntryView = [[CustomFeedEntryView alloc] initWithFrame:CGRectZero];
// 뷰에 대한 사용자 반응을 추적합니다.
[_customFeedEntryView setEntryName:@"your_custom_entry_point_1"];
[self.view addSubview:_customFeedEntryView];
// LayoutConstraint 설정
...
}
@end
적립 가능한 포인트 표시하기
아래 그림과 같이 적립 가능한 포인트를 표시하여 아직 피드에 진입하지 않은 사용자의 참여율을 높일 수 있습니다.
적립 가능한 포인트를 사용자에게 미리 보여 주려면, 아래 순서대로 구현하세요.
- 피드 광고를 할당하기 위해
[BZVBuzzAdFeed load]
를 호출하세요. - 광고 할당이 성공하면
onSuccess
콜백 이벤트가 호출됩니다.- 피드 광고 할당 및 표시하기 토픽을 참고하세요.
onSuccess
콜백 이벤트에서buzzAdFeed.availableRewards
를 호출하면, 적립 가능한 총 포인트 금액을 조회할 수 있습니다.- 위에서 조회한 적립 가능한 총 포인트 금액 값으로 뷰를 업데이트하세요.
다음은 viewDidLoad
을 실행할 때마다 피드를 새로 고침하고 뷰를 업데이트하는 예시입니다.
✏️ 참고
사용자가 광고에 참여하여 리워드를 받거나 피드를 아래로 스크롤하여 새로운 광고를 불러올 경우, 피드 진입 뷰에 표시된 적립 가능한 포인트 값과 실제로 적립 가능한 포인트 값에 차이가 발생할 수도 있습니다.
- Swift
- Objective-C
final class ViewController: UIViewController {
override func viewDidLoad() {
...생략...
customFeedEntryView.buzzAdFeed.load {
self.updateFeedEntryView(reward: self.customFeedEntryView.buzzAdFeed.availableRewards)
} onFailure: { _ in
self.updateFeedEntryView(reward: 0)
}
}
private func updateFeedEntryView(reward: Int) {
// 적립 가능한 포인트 안내 문구 설정
}
}
@implementation ViewController
- (void)viewDidLoad {
...생략...
[_customFeedEntryView.buzzAdFeed loadOnSuccess:^{
[self updateFeedEntryWithReward:self->_customFeedEntryView.buzzAdFeed.availableRewards];
} onFailure:^(NSError * _Nonnull error) {
[self updateFeedEntryWithReward:0];
}];
}
- (void)updateFeedEntryWithReward:(NSInteger)reward {
// 적립 가능한 포인트 안내 문구 설정
}
@end