오프라인 지원

SDK는 네트워크가 불안정하거나 오프라인일 때도 작동할 수 있도록 설계되었습니다.

이벤트 큐잉

사용자가 이벤트를 발생시켰는데 인터넷이 안 되면, SDK가 로컬에 저장해뒀다가 나중에 자동으로 전송합니다.

작동 방식

  1. trackEvent() 호출

  2. 인터넷 확인

  3. 인터넷 안 됨 → 로컬 DB에 저장

  4. 나중에 인터넷 복구되면 → 자동 전송

저장 위치

  • Android: Room Database (event_queue 테이블)

  • iOS: 로컬 파일 시스템

저장 용량

최대 1000개의 이벤트를 저장합니다. 초과하면 오래된 것부터 삭제됩니다.

오퍼월 캐싱

오퍼월 콘텐츠도 일부 캐싱됩니다:

  • 이미지, 스크립트 등 정적 리소스

  • 최근 본 광고 목록

  • 사용자 설정

완전 오프라인에서는 오퍼월을 열 수 없지만, 약한 네트워크에서도 빠르게 로딩됩니다.

네트워크 상태 확인

SDK는 네트워크 상태를 자동으로 감지하지만, 앱에서 직접 확인할 수도 있습니다:

Android:

iOS:

수동으로 이벤트 전송

오프라인에서 앱을 쓰다가 인터넷이 다시 연결되면, SDK가 자동으로 쌓인 이벤트를 보냅니다. 하지만 수동으로 트리거하고 싶다면:

주의사항

오프라인에서 할 수 없는 것

  • SDK 초기화

  • 사용자 로그인

  • 오퍼월 첫 로딩

  • 퀴즈/미션 목록 조회

오프라인에서 할 수 있는 것

  • 이벤트 큐잉 (나중에 전송)

  • 이미 로딩된 오퍼월 보기

  • 캐싱된 콘텐츠 접근

네트워크 최적화

이벤트 재전송 시 SDK는 다음과 같이 최적화되어 있습니다:

  • 지수 백오프: 실패하면 재시도 간격을 점점 늘림 (1초, 2초, 4초, 8초...)

  • 배치 전송: 이벤트를 모아서 한 번에 전송

  • 네트워크 타입 확인: Wi-Fi일 때만 대량 전송

다음 단계

Last updated