오늘의배달 개인정보처리방침

시행일: 2026년 9월 6일

최신 개인정보처리방침: https://riderone.bomstudio.co.kr/privacy

오늘의배달(이하 “앱”)은 이용자의 개인정보를 최소한으로 처리하도록 설계되었습니다. 핵심 퍼즐과 기기 내 프로필은 별도 계정 없이 이용할 수 있습니다. 계정·랭킹 기능은 제공되는 앱 버전에서만 이용할 수 있고, 제공되지 않는 버전에서는 관련 메뉴가 표시되지 않을 수 있습니다. 기존 계정의 삭제 요청은 https://riderone.bomstudio.co.kr/account-deletion 에서 확인할 수 있습니다. 현재 Android 버전에서 시즌 랭킹과 오늘의 배달에 참가하려면 서버가 검증한 Google Play Games 연결이 필요하며, 서버가 해당 Player ID 전용 비익명 Supabase 사용자를 내부 생성하거나 복구합니다. 앱은 Google·카카오 외부 OAuth 로그인, 이메일·전화번호 직접 로그인, 비밀번호 입력을 제공하지 않습니다. 이용자가 입력한 닉네임과 선택한 대표 라이더는 랭킹 참가 중에도 기기에만 저장되고 서버로 전송되지 않습니다.

1. 기기에 저장되는 정보

앱은 프로필 닉네임과 대표 라이더, 퍼즐 진행, 완료 상태, 연속 기록, 쉬운 모드, 비로그인 라이더 면허 코스의 파워 잔액과 중복 차감 방지용 실행 식별자, 효과음·진동·새 퍼즐 소식 알림·사용량 분석 동의 설정과 확인한 공지 식별자를 이용자의 기기에 저장합니다. Android에서 오늘의 배달 참여 리마인더를 켠 경우에는 선택한 요일·시각, 예약·표시와 중복 방지에 필요한 날짜·난수 식별자, 계정 범위 확인용 해시 값을 앱 전용 저장 영역에 보관합니다. Supabase 인증을 사용하는 경우 로그인 유지를 위한 접근 토큰과 갱신 토큰도 앱의 전용 저장 영역에 보관합니다. 랭킹 참가 중 성공 경로를 서버가 확인하지 못한 경우에는 같은 기록을 안전하게 다시 전송하기 위해 이용자·시즌 식별자, 실행 식별자, 성공 경로와 재시도 시각을 앱 전용 저장 영역에 임시 보관합니다. 오늘의 배달은 같은 기기에서 미완료 판을 이어가기 위해 회차·순번·스테이지 해시, 그린 경로와 선택 라이더를 보관하고, 서버 처리 결과가 확인되지 않은 실행은 실행 식별자와 제출 내용을 임시 보관합니다. 마지막으로 서버에서 확인한 누적 우승 횟수와 챔피언 프레임 장착 상태는 Supabase 계정별로 분리해 기기에 보관하며, 계정 소유자를 확인할 수 없을 때는 표시하지 않습니다. 이 정보는 프로필 표시, 앱의 핵심 기능과 설정 유지, 계정·랭킹 로그인 유지와 전송 복구에 사용됩니다.

2. 선택적 시즌 랭킹

시즌 랭킹은 선택 기능입니다. 이용자가 “동의하고 랭킹 참가”를 누른 경우 다음 정보가 Supabase로 전송·저장됩니다.

이 정보는 서버에서 경로의 유효성 및 충돌 여부를 다시 확인하고, 레벨별 최고 별 기록과 시즌 순위를 산정하며, 중복 제출과 비정상 이용을 방지하고, 참가 후 첫 제출·최고점 도달 기간과 날짜 단위 시즌 재방문을 집계하기 위해 처리됩니다. 같은 날의 방문 횟수나 정밀 체류 시간은 시즌 활동 정보로 저장하지 않습니다. 공개 랭킹에는 순위, 서버 생성 Rider ID, 서버 선택 공개 아바타, 시즌 별과 완료 배달 수가 표시됩니다. Rider ID는 이용자 식별자, Google Play Games 프로필 또는 기기 프로필에서 파생하지 않습니다. 본인 행도 같은 서버 공개 ID·아바타를 사용하고 기기에서 '나' 표시만 더합니다. 이용자 식별자와 세부 경로, 인증 토큰, 제출·검증 시각과 시즌 활동일은 다른 이용자에게 공개하지 않습니다. 랭킹에 참가하지 않으면 게임 경로는 랭킹 서버로 전송되지 않습니다.

2-1. 오늘의 배달

오늘의 배달에 참가하면 Google이 일회성 서버 인증 코드로 확인한 Play Games Player ID를 비익명 Supabase 이용자 식별자에 연결합니다. 기존 연결이 없으면 서버 비밀키로 Player ID에서 만든 불투명한 내부 이메일을 Auth 복구 키로 사용해 전용 사용자를 만들며, 이 내부 이메일은 이용자의 실제 이메일이 아니고 화면·공개 순위에 표시하지 않습니다. 원시 인증 코드, Google 접근 토큰과 전송하지 않는 로그인 링크는 검증·세션 교환 후 저장하지 않습니다. 서버는 이용자마다 `Rider`와 7자리 숫자 형식의 오늘의 배달 공개 ID 및 앱 제공 아바타를 무작위 생성하며, Google 표시 이름·사진과 기기 프로필을 오늘의 배달 순위에 사용하지 않습니다.

앱은 회차 날짜, 스테이지 순번·해시, 실행 식별자와 그린 경로를 전송합니다. 서버는 같은 날짜의 모든 참가자에게 같은 스테이지를 제공하고 경로·충돌·별을 검증하며, 최초 유효 완료의 3–5별만 당일 합계에 반영합니다. 충돌한 실행은 계정 서버 파워를 한 번 차감합니다. 비로그인 라이더 면허 코스의 기기 파워는 서버로 전송하거나 계정 지갑과 합산하지 않습니다. 회차 정산이 끝나면 유효 별이 가장 많은 공동 1위 전원의 우승 내역을 계정에 기록하고, 누적 우승 횟수와 챔피언 프로필 프레임 소유·장착·획득 안내 확인 상태를 저장합니다. 공개 오늘의 배달 순위에는 당일 순위, 오늘의 배달 Rider ID, 앱 제공 아바타, 별 합계, 정확한 누적 우승 횟수와 장착한 챔피언 프레임이 표시됩니다. 프레임 소유 여부, 장착 변경 버전과 아직 확인하지 않은 우승 안내는 인증된 본인에게만 제공합니다. 과거 날짜의 순위 화면은 제공하지 않지만 누적 횟수와 소유권의 근거인 회차·계정별 우승 내역은 계정이 유지되는 동안 보관합니다. 접수·완료·중복 방지 기록은 결과 확인과 장애 대응에 필요한 기간 동안 보관하며, 구체적인 자동 삭제 기간은 운영 정책이 확정되면 이 방침에 반영합니다.

3. 게임 플랫폼과 계정

Android에서 Google Play Games 연결을 선택하면 앱은 해당 플랫폼의 Player ID와 인증 상태를 처리합니다. 오늘의 배달과 시즌 랭킹에서는 Google이 발급한 일회성 서버 인증 코드로 검증한 Player ID가 전용 Supabase 이용자와 세션을 생성·복구합니다. 원시 인증 코드와 Google 접근 토큰은 검증·세션 교환 뒤 저장하지 않습니다. Google·카카오 외부 OAuth 제공자, 시스템 브라우저 OAuth callback, 이메일·비밀번호 로그인은 앱에서 제공하지 않습니다. 플랫폼 표시 이름과 식별자는 공개 랭킹 별칭에 사용하거나 다른 이용자에게 공개하지 않습니다. Google Play Games 계정 자체의 로그인·관리·삭제는 Google의 정책과 기기 설정을 따릅니다.

4. 그 밖의 네트워크 처리

앱은 공개 공지, 공개 앱 설정 및 공개 도전 퍼즐 팩을 받기 위해 Supabase에 읽기 요청을 보냅니다. 네트워크 제공자나 호스팅 사업자는 보안 및 운영을 위해 IP 주소, 요청 시각, 기기·브라우저 정보가 포함된 접속 기록을 처리할 수 있습니다. Supabase는 앱의 인증·데이터베이스 호스팅 수탁자로서 랭킹 정보와 접속 기록을 처리합니다.

Android 앱은 지원되는 최소 앱 버전을 확인하고 필요한 경우 Play 스토어 업데이트를 안내하기 위해 Firebase Remote Config를 앱 시작 및 백그라운드에서 복귀할 때 조회합니다. 이 과정에서 Firebase Installations의 앱 설치 식별 정보, 앱·기기·운영체제 버전, IP 주소와 요청 시각 등의 접속 정보가 처리될 수 있습니다. 업데이트 확인은 앱 호환성과 안전한 서비스 제공을 위한 필수 기능으로 사용량 분석 동의와 별도로 동작하며, 닉네임·이메일·Supabase 계정 식별자·Play Games Player ID·게임 경로·점수·알림 내용은 전송하지 않습니다. 실제 처리와 보유는 Google의 정책을 따릅니다.

푸시 알림 기능이 활성화된 배포에서는 Firebase Cloud Messaging(FCM)이 앱 설치 식별 정보, FCM 등록 정보, 기기·운영체제 정보와 알림 전송·수신에 필요한 접속 기록을 처리할 수 있습니다. Android 알림은 FCM으로, iOS 알림은 FCM과 Apple Push Notification service(APNs)를 통해 전달됩니다. 앱의 초기 공개 토픽 방식에서는 FCM/APNs 기기 토큰을 Supabase 데이터베이스에 저장하지 않으며, 알림 내용은 공개된 새 퍼즐과 시즌 랭킹 시작 소식으로 제한합니다. 개인 순위·점수·계정 정보는 이 공개 토픽으로 보내지 않습니다. SDK 초기화 과정에서 설치·등록 정보가 처리될 수 있으므로 알림 수신 선택과 등록 정보 처리를 구분합니다. 공개 토픽은 이용자가 알림을 켜고 필요한 권한을 허용한 뒤 구독합니다. 알림 설정 해제는 토픽 구독 해제이며 등록 정보 전체의 삭제가 아닙니다. 실제 처리와 보유는 Google, Apple과 이용 기기의 설정 및 정책을 따릅니다.

Android 오늘의 배달 참여 리마인더는 이용자가 설정에서 직접 켠 경우에만 Android 알림 권한과 기기 알림 예약 기능을 사용합니다. 이 예약은 선택한 요일·시각과 위 기기 저장 정보를 사용해 다음 한 건만 기기 안에서 준비하며, 발송·열람을 위해 FCM·APNs·Supabase에 기기 토큰, 메시지 내용, 개인 순위 또는 계정 정보를 보내지 않습니다. 이용자가 설정에서 리마인더를 끄면 다음 예약, 재시작·시간 변경 복구 상태와 처리 대기 중인 탭 정보가 기기에서 삭제됩니다.

Android Store release 빌드에서는 앱 비정상 종료와 ANR을 진단하기 위해 Firebase Crashlytics가 앱 인스턴스 식별 정보, 앱·기기·운영체제 버전, 오류 시점의 스택 정보와 제한된 진단 로그를 처리할 수 있습니다. 앱은 Crashlytics 사용자 식별자나 맞춤 키에 닉네임, 이메일, Supabase·Play Games 계정 식별자, 그린 경로 좌표, 알림 내용 또는 임의 사용자 입력을 넣지 않습니다. Debug·개발 빌드는 Crashlytics 네이티브 모듈과 수집을 포함하지 않습니다. 운영 장애 알림은 Firebase의 문제 메타데이터만 TManager 워크스페이스의 전용 Slack 수신 경로로 전달하며, 플레이어 데이터는 이 알림에 추가하지 않습니다. Google과 Slack의 처리·보유는 각 서비스의 정책을 따릅니다.

앱 최초 실행 시 타이틀 화면에서 사용량 분석 선택 화면을 한 번 표시합니다. 동의 또는 거절을 선택하면 다시 묻지 않으며, 기존 이용자 중 아직 선택하지 않은 경우에는 다음 앱 실행 시 표시합니다. 이용자가 `동의하고 공유`를 선택하거나 설정에서 `사용량 분석`을 켠 경우 Firebase Analytics와 연결된 Google Analytics 4가 앱 인스턴스 식별 정보, IP 주소에서 파악한 대략적인 접속 지역, 기기·운영체제·앱 버전 정보, 접속 기록과 앱 열기·세션, 화면 이동, 퍼즐 시작·시도·성공·충돌·명시적 이탈, 오늘의 배달 진입·시도·검증 결과, 우승 보상 안내 표시와 챔피언 프레임 장착·해제, 튜토리얼 완료·건너뛰기, 분석·원격 알림 선택·열기, 오늘의 배달 참여 리마인더 설정·해제, 랭킹 참가·기록 검증·Play Games 연결 확인, 전면광고 표시·닫기 같은 집계용 이벤트를 처리할 수 있습니다. 우승 보상 이벤트에는 최초 해금 여부와 장착 여부만 0 또는 1로 포함하며 우승 날짜·횟수·순위·Rider ID는 포함하지 않습니다. 알림 열기에는 `home`·`challenge`·`leaderboard`·`daily_play` 중 화면 종류만 포함하며 캠페인·발생 식별자나 메시지 내용은 포함하지 않습니다. 명시적 이탈은 성공 전에 다른 퍼즐로 바꾸거나 타이틀로 돌아간 경우만 포함합니다. `공유 안 함`을 선택해도 핵심 퍼즐은 동일하게 이용할 수 있으며, 선택은 설정에서 언제든 변경할 수 있습니다. 앱은 이 분석 이벤트에 닉네임, 이메일, Supabase 이용자 식별자, Play Games Player ID, 그린 경로 좌표나 메시지 내용을 넣지 않으며 Supabase 랭킹 이용자와 Google Analytics 이용자를 개인 단위로 결합하지 않습니다. 분석 수집은 기본적으로 꺼져 있으며, 끈 뒤에는 새 분석 이벤트 전송을 중지하지만, 이미 Google에 전송된 집계 데이터의 처리·보유에는 Google의 정책이 적용될 수 있습니다.

Sentry가 포함된 출시 빌드에서는 앱·기기·운영체제 정보, 오류 스택과 제한된 진단 기록이 장애·성능 진단 목적으로 처리될 수 있습니다. Firebase Crashlytics와 Sentry 오류 진단은 사용량 분석 동의와 별도로 동작하며, 사용량 분석을 꺼도 함께 중지되지 않습니다. 분석·광고·오류 진단 정보와 Firebase 등록 정보 전체가 Supabase 계정 삭제로 함께 지워지는 것은 아닙니다.

5. 광고와 동의 관리

Android 또는 iOS 앱은 Google Mobile Ads SDK와 User Messaging Platform을 사용할 수 있습니다. 법령과 이용자의 동의 선택, 기기 설정 및 광고 구성에 따라 Google이 광고 식별자, 대략적 위치, 기기 정보, 광고 상호작용 정보 등을 처리할 수 있습니다. 광고 개인정보 설정이 필요한 지역과 상태에서는 앱 안에 해당 설정 진입점이 표시됩니다. Google의 구체적인 처리 내용과 선택 방법은 Google의 개인정보처리방침 및 광고 관련 정책을 따릅니다.

6. 공유 기능

공유는 이용자가 버튼을 누르고 공유 대상을 직접 선택한 경우에만 실행됩니다. 공유되는 내용은 완료 문구와, 설정된 경우 앱 링크입니다. 그린 경로 좌표, 플레이 기록, 기기 식별자는 공유 문구에 포함하지 않습니다. 공유 이후의 처리는 이용자가 선택한 앱의 정책을 따릅니다.

7. 보유 기간과 삭제

기기에 저장된 프로필, 진행, 비로그인 파워와 설정은 앱 데이터가 유지되는 동안 보관됩니다. 기기의 Play Games 인증 정보와 앱의 Supabase 세션은 계정 삭제 또는 앱 데이터 삭제 시 제거됩니다. 전송 대기 중인 시즌 점수 경로는 서버 확인, 시즌 변경, 랭킹 탈퇴 또는 계정 삭제 때 기기에서 제거됩니다. 오늘의 배달 초안과 미확인 실행은 해당 사용자·회차·스테이지에만 복원되며 서버 결과 확인, 완료 또는 앱 데이터 삭제 시 정리됩니다. 계정별 누적 우승·프레임 캐시는 앱 데이터 삭제 시 제거되며, 계정 소유자를 확인하지 못하는 동안 다른 프로필에 표시하지 않습니다. 알림 설정을 끄면 앱은 공개 소식 토픽 구독 해제를 요청하며, 앱 삭제 또는 FCM 등록 정보 갱신 시 기존 등록 정보의 처리는 Google·Apple 정책을 따릅니다. 오늘의 배달 참여 리마인더를 끄면 다음 예약, 재시작·시간 변경 복구 상태와 처리 대기 탭 정보가 기기에서 삭제됩니다. 원격 시즌 랭킹 정보는 이용자가 랭킹에 참가하는 동안 보관되며, 앱의 랭킹 화면에서 “랭킹 탈퇴”를 선택하면 시즌 랭킹 프로필, 제출 경로와 별, 시즌 참가·활동일이 함께 삭제됩니다. 이 작업은 오늘의 배달 공개 프로필·당일 진행·우승 내역·프레임이나 계정 서버 파워를 삭제하지 않습니다. “계정 삭제”를 선택하면 Supabase Auth 계정과 이에 연결된 시즌 랭킹·오늘의 배달 데이터, 우승 내역·프레임, Play Games 연결과 계정 서버 파워가 삭제되지만 기기에 저장된 퍼즐 진행·비로그인 파워와 설정은 유지됩니다. 관계 법령에 따른 보존 의무나 장애 복구용 백업에 이미 포함된 정보는 정해진 기간 동안 제한적으로 남을 수 있습니다.

앱 삭제 또는 운영체제의 앱 데이터 삭제는 기기 정보와 인증 토큰을 제거하지만, 그 전에 전송된 Supabase 계정과 원격 랭킹 정보를 자동으로 삭제하지는 않습니다. 원격 랭킹 정보만 삭제하려면 랭킹 탈퇴를, 계정 전체를 삭제하려면 계정 삭제를 앱 삭제 전에 이용해 주세요. 계정은 같은 Google Play Games 연결로 다시 접근할 수 있습니다. Google Play Games 계정 자체의 삭제 또는 로그아웃은 Google과 기기 설정에서 관리합니다.

8. 이용자의 선택과 권리

이용자는 계정 또는 랭킹에 참가하지 않아도 핵심 퍼즐과 로컬 프로필을 이용할 수 있습니다. 프로필 화면에서 닉네임과 대표 라이더를 변경할 수 있으며 이 변경 사항은 기기에만 저장됩니다. 시즌 랭킹과 오늘의 배달의 본인 행도 서버가 만든 해당 공개 ID·아바타를 표시하며, 이 기기에서만 '나' 표시를 더합니다. Android에서는 시즌 랭킹 또는 오늘의 배달 참가를 선택할 때 Google Play Games 연결을 시작할 수 있으며, 연결된 뒤 계정 화면에서 계정 삭제를 관리할 수 있습니다. Google·카카오 외부 OAuth 계정 연결과 앱 내부 로그아웃은 제공하지 않습니다. 시즌 랭킹 화면에서는 참가 동의를 철회하여 시즌 공개 프로필과 랭킹 데이터만 삭제할 수 있습니다. 기기 게임 플랫폼 연결, 새 퍼즐 소식 알림, 오늘의 배달 참여 리마인더와 사용량 분석은 선택 사항입니다. 알림 기능이 제공되는 경우 설정 화면에서 알림을 끌 수 있고 운영체제 설정에서도 알림 권한을 변경할 수 있습니다. 설정 화면에서 사용량 분석·효과음·진동을 끌 수 있고, 광고 개인정보 설정 버튼이 표시되는 경우 동의 선택을 다시 확인할 수 있습니다.

9. 아동의 개인정보

앱은 아동에게 실명, 연락처 등 개인정보 입력을 요구하지 않습니다. 로컬 닉네임은 다른 이용자에게 공개하거나 랭킹 서버로 전송하지 않습니다. 미성년자는 필요한 경우 법정대리인의 안내와 동의를 받아 Google Play Games 연결과 랭킹에 참가해야 합니다. 외부 광고 서비스의 적용 방식은 이용 지역, 연령 관련 법령, 동의 및 배포 설정에 따라 제한될 수 있습니다.

10. 안전성 확보

앱은 공개용 Supabase 키와 이용자별 짧은 수명의 접근 토큰만 사용하며 서버 관리용 비밀 키를 앱에 포함하지 않습니다. 랭킹 테이블은 행 수준 보안과 권한 회수로 직접 접근을 차단하고, 참가 함수는 로컬 닉네임·아바타 입력을 받지 않으며, 서버 함수가 제출 경로를 정본 레벨과 동일한 규칙으로 검증한 경우에만 별을 기록합니다.

11. 방침 변경과 문의

이 방침이 변경되면 시행일과 주요 변경 내용을 앱 공지 또는 배포 채널을 통해 안내합니다. 개인정보 또는 랭킹 데이터 삭제 관련 문의는 help@bomstudio.co.kr로 보내 주세요. 이전 방침과 변경 이력은 https://riderone.bomstudio.co.kr/privacy 에서 확인할 수 있습니다.