본문으로 건너뛰기

유저 편의 기능

Buzzvil SDK를 연동한 후 추가할 수 있는 유저 편의 기능을 구현하는 방법에 대해 알아보세요.

iOS 17을 위한 대응

Buzzvil SDK에서 iOS 17를 대응하기 위해 적용된 사항에 대해 확인할 수 있습니다.

✏️   참고
자세한 사항은 Apple Developer - Privacy manifest files, Upcoming third-party SDK requirements, Privacy updates for App Store submissions를 참고하세요.

Privacy manifest

2024년 5월 1일부터 App Store의 모든 앱 및 SDK는 개인정보 보호 목록(Privacy Manifest)에 개인정보 관련 사항들을 명시해야 합니다. 개인정보 보호 목록이 포함된 SDK를 사용하기 위해서는 BuzzvilSDK 버전 5.9.0 이상을 사용해야 합니다.

XCFramework signature 적용

2024년 5월 1일부터 App Store의 모든 앱은 binary dependency로 SDK를 추가할 때, signature가 적용된 SDK를 추가해야 합니다. signature가 적용된 SDK를 사용하기 위해서는 BuzzvilSDK 버전 5.9.0 이상을 사용해야 합니다.

액션형 광고의 유저 문의 기능 추가하기

Buzzvil SDK는 동영상 시청, 앱 설치, 페이스북 페이지의 ‘좋아요’ 클릭 등 다양한 사용자 액션에 리워드를 지급하는 액션형 광고를 제공합니다. 액션형 광고에 참여한 사용자가 포인트 적립에 실패하는 경우, Buzzvil SDK에서는 문의(이하 VOC) 접수와 처리를 자동화하는 서비스를 제공합니다.

VOC 기능을 추가하려면 다음의 절차를 따르세요.

  1. VOC 처리 페이지를 불러오기 위한 UI(아이콘 또는 탭)을 디자인하세요.
  2. 1번 단계에서 디자인한 UI를 클릭하면 아래의 코드를 호출하세요.
    • 이때, YOUR_UNIT_ID 인자는 필수로 설정해야 합니다. 각 지면에 맞는 Unit ID 값을 사용하세요.
ipmort BuzzAdBenefitSDK

BuzzAdBenefit.presentInquiryPage(on: YOUR_VIEW_CONTROLLER, unitId: "YOUR_UNIT_ID")

동영상 광고 재생 조건 변경하기

동영상 광고는 기본적으로 사용자 기기가 Wi-Fi를 통해 인터넷에 연결되어 있을 때에만 자동 재생되도록 설정되어 있습니다. 동영상 광고를 자동으로 재생하는 조건은 다음 중 한 가지로 설정할 수 있습니다.

자동 재생 조건 코드설명
BZVVideoAutoPlayOnWifi
  • 사용자 기기가 Wi-Fi를 통해 인터넷에 연결되어 있을 때에만 자동으로 재생합니다.
  • 초기 설정 값입니다.
BZVVideoAutoPlayEnabled사용자 기기의 인터넷 연결 방식과 상관없이 항상 자동으로 재생합니다.
BZVVideoAutoPlayDisabled사용자 기기의 인터넷 연결 방식과 상관없이 자동으로 재생하지 않습니다.

다음은 Wi-Fi를 통해 인터넷에 연결되어 있을 때에만 동영상 광고를 자동 재생하도록 설정하는 예시입니다.

let userPreferences = BZVUserPreferences { builder in
builder.autoPlayType = .onWifi
}
BuzzAdBenefit.setUserPreferences(userPreferences)

오프라인 빌드

오프라인 모드에서 Buzzvil SDK를 연동하고 앱을 빌드할 수 있습니다. 오프라인 빌드를 진행하려면 먼저 버즈빌에 제공하는 프레임워크를 준비하고 프로젝트에 프레임워크와 Run script를 추가해야 합니다.

오프라인 빌드용 프레임워크의 구성

버즈빌에서 오프라인 빌드를 위해 제공하는 프레임워크는 아래와 같이 구성되어 있습니다. 정상적인 빌드를 위해서는 아래에 나열된 프레임워크를 모두 프로젝트에 추가해야 합니다.

분류파일명설명
BuzzvilSDK FrameworkBuzzvilSDK.framework버즈빌 통합 프레임워크
BuzzAdBenefitSDK FrameworkBuzzAdBenefitSDK.framework광고 지면을 사용하기 위한 프레임워크
BuzzBoosterSDK FrameworkBuzzBoosterSDK.framework마케팅 솔루션을 사용하기 위한 프레임워크
SDWebImage.frameworkUIImageView 카테고리로써 캐시를 지원하는 비동기식 이미지 다운로더
SDWebImageWebPCoder.framework정적 WebP 또는 애니메이션 WebP에 대해 WebP 디코딩 및 인코딩을 모두 지원하는 프레임워크
GoogleAds-IMA-iOS-SDKVAST 호환 광고 서버에서 광고를 요청하고 앱에서 동영상 광고의 재생 동작을 관리하고 제어하는 SDK

오프라인 빌드용 프레임워크 추가하기

프로젝트에 오프라인 빌드용 프레임워크를 추가하려면 다음의 절차를 따르세요.

  1. [프로젝트 메뉴] > General 탭을 클릭하세요.
  2. Embedded Binaries 영역에서 + 버튼을 클릭하여 버즈빌의 오프라인 빌드용 프레임워크를 추가하세요.

Run script 추가하기

Universal framework로 빌드된 바이너리에서 불필요한 architecture들을 떼어내기 위해 Run script를 추가해야 합니다.

Run script를 추가하려면 다음의 절차를 따르세요.

  1. [프로젝트 메뉴] > Build Phases 탭을 클릭하세요.
  2. 왼쪽 상단의 + 버튼을 클릭하고 New Run Script Phase를 선택하세요.
  3. 아래 스크립트를 붙여 넣으세요.
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK; do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"

EXTRACTED_ARCHS=()

for ARCH in $ARCHS; do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done

echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"

echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done

iOS 12 이상에서만 SDK가 동작하도록 구현하기

Buzzvil SDK는 iOS 12 이상의 기기에서 작동합니다. 그러므로 앱이 iOS 12 미만의 기기를 지원하는 경우, iOS 12 이상의 버전에서만 Buzzvil SDK 코드를 호출하세요.

  오류
iOS 12 미만의 기기에서 Buzzvil SDK 코드를 호출하면 앱이 비정상적으로 종료될 수 있습니다.

다음은 iOS 12 이상에서만 Buzzvil SDK 코드를 호출하는 예시입니다.

if #available(iOS 12, *) {
// Buzzvil SDK 코드
}

광고 타입 확인하기

베네핏허브와 네이티브 지면의 광고 타입을 알고 싶은 경우 BZVNativeAd 에서 제공하는 함수를 통해 확인할 수 있습니다.

BZVNativeAd 에서 광고 타입을 확인하는 함수는 다음과 같습니다.

함수설명리턴 값
BZVNativeAd.revenueTyperevenueType을 string으로 반환합니다.
  • cpinsta: 인스타그램 계정을 팔로우하면 포인트를 주는 광고입니다.
  • cpa: 회원가입, 보험료 조회 등 특정 액션을 완료하면 포인트를 주는 광고입니다.
  • cpe: 앱을 설치하고 실행하면 포인트를 주는 광고입니다.
  • cpi: 앱을 설치하면 포인트를 주는 광고입니다.
  • cpl: 페이스북 계정을 팔로우하면 포인트를 주는 광고입니다.
  • cps: 물품 구매를 완료하면 포인트를 주는 광고입니다.
  • cpyoutube: 유튜브 채널을 구독하면 포인트를 주는 광고입니다.
  • cptiktok: 틱톡 계정을 팔로우하면 포인트를 주는 광고입니다.
  • cpnstore: 네이버 스마트스토어를 찜하면 포인트를 주는 광고입니다.
  • cpq: 퀴즈를 맞추면 포인트를 주는 광고입니다.
  • cpqlite: 퀴즈를 맞추면 포인트를 주는 광고입니다.
  • cpk: 카카오 페이지를 추가하면 포인트를 주는 광고입니다.
  • cpc: 클릭을 통해 광고주 페이지에 랜딩하면 포인트를 주는 광고입니다.
  • cpm: 광고가 1,000번 노출되면 광고주가 비용을 지급하는 광고입니다.
  • cpy: 유튜브 채널을 구독하고 영상을 좋아하면 포인트를 주는 광고입니다.
  • cpv: 영상 시청을 완료하면 포인트를 주는 광고입니다.
  • -cps: cps를 제외한 광고입니다.
BZVNativeAd.isActionType액션형(cpa) 광고 여부를 boolean 값으로 반환합니다.
  • true: cpa 광고입니다.
  • false: cpa 광고가 아닙니다.
BZVNativeAd.isCps쇼핑형(cps) 광고 여부를 boolean 값으로 반환합니다.
  • true: cps 광고입니다.
  • false: cps 광고가 아닙니다.

다음은 BZVNativeAd 에서 광고 타입을 확인하는 예제입니다.

let isActionType = nativeAd.isActionType()
let isCps = nativeAd.isCps()
let revenueType = nativeAd.revenueType