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

시작하기
AdchainQuiz 인스턴스 생성
퀴즈 기능을 사용하려면 먼저 AdchainQuiz 인스턴스를 생성합니다.
Android:
iOS:
React Native:
React Native에서는 SDK의 전역 인스턴스를 사용합니다.
퀴즈 완료 이벤트 리스너 설정 (선택사항)
퀴즈 완료 이벤트를 받으려면 리스너를 설정합니다.
Android:
iOS:
React Native:
퀴즈 목록 조회
현재 진행 중인 퀴즈 목록을 가져옵니다.
Android:
iOS:
React Native:
응답 데이터 구조
QuizResponse
퀴즈 목록 조회 시 반환되는 전체 응답 구조입니다.
success
boolean
요청 성공 여부
titleText
string?
퀴즈 섹션 제목 (예: "데일리 1분 퀴즈")
completedImageUrl
string?
모든 퀴즈 완료 시 표시할 배너 이미지 URL
completedImageWidth
number?
완료 배너 이미지 너비 (픽셀)
completedImageHeight
number?
완료 배너 이미지 높이 (픽셀)
events
QuizEvent[]
퀴즈 목록
message
string?
에러 메시지 (실패 시)
QuizEvent (Quiz)
개별 퀴즈 객체의 구조입니다.
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 (내부 추적용)
중요:
point필드는 string 타입입니다 (예: "100P", "+50포인트"). 숫자로 파싱하지 마세요.완료 여부는 Android/iOS에서
completed, React Native에서isCompleted로 확인합니다.impressionOrder와placementId는 SDK 내부 추적용 필드입니다.
예시:
퀴즈 클릭 처리
사용자가 퀴즈를 클릭하면 clickQuiz() 메서드를 호출합니다. SDK가 자동으로 WebView를 열고 퀴즈를 진행합니다.
Android:
iOS:
React Native:
clickQuiz 동작 흐름
clickQuiz() 호출 시 SDK는 자동으로:
quiz_clicked이벤트 추적퀴즈 WebView를 전체화면으로 열기
사용자가 퀴즈 완료 시:
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
베스트 프랙티스
이벤트 리스너 우선 설정
onQuizCompleted에서 반드시 새로고침
완료된 퀴즈 시각적 구분
투명도 낮추기 (
alpha = 0.5)"완료" 배지 표시
클릭 비활성화
React Native 캐싱 전략
빈 상태 처리
퀴즈가 없을 때는 오퍼월로 유도하는 배너 표시
완료 이미지 (
completedImageUrl) 활용
에러 처리
Android/iOS 인스턴스 관리
다음 단계
Last updated