퀴즈

퀴즈는 사용자가 간단한 질문에 답하고 포인트를 받을 수 있는 기능입니다. 오퍼월과 함께 사용하면 참여율이 높아집니다.

시작하기

AdchainQuiz 인스턴스 생성

퀴즈 기능을 사용하려면 먼저 AdchainQuiz 인스턴스를 생성합니다.

Android:

iOS:

React Native:

React Native에서는 SDK의 전역 인스턴스를 사용합니다.

퀴즈 완료 이벤트 리스너 설정 (선택사항)

퀴즈 완료 이벤트를 받으려면 리스너를 설정합니다.

Android:

iOS:

React Native:

퀴즈 목록 조회

현재 진행 중인 퀴즈 목록을 가져옵니다.

Android:

iOS:

React Native:

React Native 중요: 모든 Quiz API는 unitId 파라미터가 필수입니다. AdChain 대시보드에서 Quiz Unit을 생성하고 해당 ID를 사용하세요.

응답 데이터 구조

QuizResponse

퀴즈 목록 조회 시 반환되는 전체 응답 구조입니다.

필드
타입
설명

success

boolean

요청 성공 여부

titleText

string?

퀴즈 섹션 제목 (예: "데일리 1분 퀴즈")

completedImageUrl

string?

모든 퀴즈 완료 시 표시할 배너 이미지 URL

completedImageWidth

number?

완료 배너 이미지 너비 (픽셀)

completedImageHeight

number?

완료 배너 이미지 높이 (픽셀)

events

QuizEvent[]

퀴즈 목록

message

string?

에러 메시지 (실패 시)

QuizEvent (Quiz)

개별 퀴즈 객체의 구조입니다.

필드
타입
Android
iOS
React Native
설명

id

string

퀴즈 고유 ID

title

string

퀴즈 제목

description

string?

퀴즈 설명

imageUrl

string

썸네일 이미지 URL

point

string

보상 포인트 (문자열, 예: "100P")

landingUrl

string

내부 사용

퀴즈 URL

status

string?

-

퀴즈 상태

completed

boolean?

-

완료 여부

isCompleted

boolean?

-

-

완료 여부 (RN)

impressionOrder

number?

-

노출 순서 (내부 추적용)

placementId

string?

-

배치 ID (내부 추적용)

예시:

퀴즈 클릭 처리

사용자가 퀴즈를 클릭하면 clickQuiz() 메서드를 호출합니다. SDK가 자동으로 WebView를 열고 퀴즈를 진행합니다.

Android:

iOS:

React Native:

clickQuiz 동작 흐름

clickQuiz() 호출 시 SDK는 자동으로:

  1. quiz_clicked 이벤트 추적

  2. 퀴즈 WebView를 전체화면으로 열기

  3. 사용자가 퀴즈 완료 시:

    • quiz_completed 이벤트 추적

    • 리스너의 onQuizCompleted() 콜백 호출 (설정된 경우)

    • 포인트 자동 지급 (서버)

이벤트 리스너

리스너 인터페이스

Android:

iOS:

onQuizCompleted

사용자가 퀴즈를 완료했을 때 호출됩니다. 이 시점에서 UI를 새로고침해야 합니다.

호출 시점: 퀴즈 WebView에서 완료 이벤트 수신 시

파라미터:

  • quizEvent: 완료된 퀴즈 정보

  • score (Android) / rewardAmount (iOS): 획득한 점수/보상 (일반적으로 0)

사용 예시:

Android:

iOS:

React Native:

자동 추적 이벤트

SDK는 다음 이벤트를 자동으로 추적하여 AdChain 대시보드에 전송합니다.

이벤트명
발생 시점
페이로드

quiz_impressed

퀴즈 목록 로드 시 (각 퀴즈마다)

quizId, quizTitle, impressionOrder, placementId, userId

quiz_clicked

퀴즈 클릭 시

quizId, quizTitle, landingUrl, impressionOrder, placementId, userId

quiz_completed

퀴즈 완료 시

quizId, quizTitle, impressionOrder, placementId, userId

이 이벤트들은 별도로 구현할 필요가 없으며, AdChain 대시보드의 통계에 자동으로 반영됩니다.

UI 구현 가이드

퀴즈 목록 표시

Android (RecyclerView)

iOS (UITableView)

React Native (FlatList)

완료된 퀴즈 필터링

완료된 퀴즈를 제외하고 싶다면:

Android/iOS:

React Native:

빈 상태 처리

모든 퀴즈가 완료되었을 때 completedImageUrl을 사용하여 완료 배너를 표시할 수 있습니다.

React Native 예시:

Android/iOS:

React Native 특수사항

unitId 파라미터

React Native SDK에서는 모든 Quiz API에 unitId가 필수입니다.

unitId란?

  • AdChain 대시보드에서 생성하는 Quiz Unit의 고유 식별자

  • 같은 앱에서 여러 Quiz Unit을 운영할 수 있음 (예: 메인 화면, 프로필 화면)

  • 각 Unit별로 다른 퀴즈 세트 관리 가능

사용 예시:

이벤트 리스너

React Native는 Native Event Emitter를 사용합니다.

주의사항 및 베스트 프랙티스

주의사항

  • 로그인 필수: 사용자가 로그인되어 있어야 퀴즈 조회 가능

  • 네트워크 필요: 오프라인 상태에서는 조회 불가

  • point는 문자열: point 필드는 string 타입으로, 숫자로 파싱하지 말 것

  • 플랫폼별 필드명 차이: 완료 여부는 Android/iOS에서 completed, React Native에서 isCompleted

베스트 프랙티스

  1. 이벤트 리스너 우선 설정

  2. onQuizCompleted에서 반드시 새로고침

  3. 완료된 퀴즈 시각적 구분

    • 투명도 낮추기 (alpha = 0.5)

    • "완료" 배지 표시

    • 클릭 비활성화

  4. React Native 캐싱 전략

  5. 빈 상태 처리

    • 퀴즈가 없을 때는 오퍼월로 유도하는 배너 표시

    • 완료 이미지 (completedImageUrl) 활용

  6. 에러 처리

  7. Android/iOS 인스턴스 관리

다음 단계

Last updated