본문으로 건너뛰기

앱 UI에 진입 경로 추가

앱 화면의 아이콘, 버튼, 배너 등 레이아웃 UI에 뷰를 직접 구현하여 피드로 진입하는 경로를 만들 수 있습니다.

진입 경로를 생성할 수 있는 UI 컴포넌트의 예시는 아래 다이어그램을 참고하세요. 또한 샘플 앱에서 제공하는 다양한 커스텀 진입 경로들의 샘플 코드를 확인해 보세요.

준비 사항

⚠️  주의
진입 경로의 정상적인 동작을 위해서는 피드 지면 초기화 토픽의 설명에 따라 반드시 BZVConfigBZVFeedConfig를 추가해야 합니다.

진입 경로 추가하기

뷰 컨트롤러에 피드 진입 경로를 생성할 수 있습니다. 피드 진입 경로를 뷰 컨트롤러에 추가하려면 BZVFeedEntryView를 상속받는 커스텀 뷰를 구현하고 하위 뷰로 추가하세요.

코드로 진입 경로 구현하기

다음은 코드로 BZVFeedEntryView를 상속 받는 커스텀 뷰 클래스를 구현하고 뷰 컨트롤러의 하위 뷰로 추가하는 예시입니다.

  1. BZVFeedEntryView의 서브 클래스를 정의하여 레이아웃을 직접 구현하세요.
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]
}
}
  1. 이전 단계에서 생성한 BZVFeedEntryView의 서브 클래스(CustomFeedEntryView)를 초기화하여 사용하세요.
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 설정
...
}
}

사용자 반응 추적하기

진입 경로를 생성한 후 setEntryName을 추가해 뷰의 노출 수와 사용자 클릭 수를 추적할 수 있습니다. 사용자 반응 추적 기능을 사용하려면 setEntryName을 구성하는 내용을 버즈빌 담당자에게 전달하세요.

 중요
이 기능은 BuzzAd iOS용 SDK v3.1.x부터 추가할 수 있습니다. v3.1.x 미만의 버전을 연동한 경우 이 기능을 탑재하려면 v3.1.x 이상으로 업데이트하세요.

✏️  참고

  • 사용자 반응 추적 기능을 추가하기 전 데이터 관리 설정을 위해 버즈빌 담당자에게 연락하세요.
  • setEntryName으로 들어가는 your_custom_entry_point_1 값으로는 icon, icon_message, banner 등 뷰를 설명할 수 있는 내용을 권장합니다.

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 설정
...
}
}

적립 가능한 포인트 표시하기

아래 그림과 같이 적립 가능한 포인트를 표시하여 아직 피드에 진입하지 않은 사용자의 참여율을 높일 수 있습니다.

적립 가능한 포인트를 사용자에게 미리 보여 주려면, 아래 순서대로 구현하세요.

  1. 피드 광고를 할당하기 위해 [BZVBuzzAdFeed load]를 호출하세요.
  2. 광고 할당이 성공하면 onSuccess 콜백 이벤트가 호출됩니다.
  3. onSuccess 콜백 이벤트에서 buzzAdFeed.availableRewards를 호출하면, 적립 가능한 총 포인트 금액을 조회할 수 있습니다.
  4. 위에서 조회한 적립 가능한 총 포인트 금액 값으로 뷰를 업데이트하세요.

다음은 viewDidLoad을 실행할 때마다 피드를 새로 고침하고 뷰를 업데이트하는 예시입니다.

✏️  참고
사용자가 광고에 참여하여 리워드를 받거나 피드를 아래로 스크롤하여 새로운 광고를 불러올 경우, 피드 진입 뷰에 표시된 적립 가능한 포인트 값과 실제로 적립 가능한 포인트 값에 차이가 발생할 수도 있습니다.

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) {
// 적립 가능한 포인트 안내 문구 설정
}
}