RunningMate · app.runningmate

개인정보처리방침

Park JongYun(이하 “운영자”)은 RunningMate 앱 제공을 위해 아래와 같이 정보를 처리합니다. 이 방침은 현재 앱 구현을 기준으로 작성되었습니다.

최초 시행일: 2026년 10월 6일최종 수정일: 2026년 11월 3일이번 개정 시행일: 2026년 11월 3일

1. 적용 범위

이 방침은 Android 및 iOS 앱 RunningMate와 Supabase 기반 인증·동기화·프로필·소셜 기능에 적용됩니다. Android 앱 식별자는 app.runningmate입니다. Android 전용으로 구분한 권한과 기능은 Android에만 적용됩니다. Google 또는 Kakao 자체 서비스에는 각 제공자의 정책이 적용됩니다.

2. 처리하는 정보

구분처리 내용저장 위치
계정·인증Supabase 사용자 UUID, 로그인 제공자, 마지막 인증 시각, 제공자가 전달한 이름·이메일과 기본 프로필 정보. 로그인과 계정 식별에 사용하며 제공자·동의 범위에 따라 전달 항목이 달라집니다. Google 로그인은 openid, 이메일, 기본 프로필 범위를 요청하고 ID/Access Token을 Supabase Auth에 전달합니다. Kakao 로그인은 ID Token을 전달하며 앱이 프로필·이메일 API를 별도로 호출하거나 추가 동의를 요청하지 않습니다.Supabase Auth 및 SDK의 기기 내 세션 저장소. 앱의 로컬 계정 식별에는 UUID를 사용
완료 운동운동 모드, 시작·종료 시각, 활동·일시정지 시간, 거리, 속도, 경사, 루틴 관련 정보, 실제 수행 구간, 계획 스냅샷, 콘텐츠 fingerprint기기 및 Supabase
루틴루틴 이름, 구간 이름·종류·순서·시간, 목표 속도·경사, guidance, cue 선행 시간, 반복 정보, revision 및 삭제 증거기기 및 Supabase
기기 내 운영 정보운동 checkpoint와 raw event, 음성·진동 등 설정, Sync Queue와 재시도 상태, tombstone, 삭제 metadata, 충돌 증거, 계정 삭제 복구 상태기기 내 Drift DB
세션Supabase access/refresh session. SDK의 기기 저장 메커니즘을 통해 로그인 유지에 사용됩니다.기기
사용자 프로필사용자가 설정하는 닉네임·상태 메시지, 서버가 발급하는 고유 친구 코드, UUID, 사진 경로, 생성·수정 시각과 변경 버전. 프로필 표시·수정과 친구 검색에 사용합니다. 제공자 이름을 앱 닉네임으로 자동 설정하지 않습니다.Supabase Database 및 기기 내 프로필 캐시
프로필 사진갤러리에서 선택한 사진을 등록·변경·삭제하고 프로필에 표시합니다. 기기에서 정사각형으로 자르고 최대 512px로 축소해 JPEG로 재인코딩하며 원본 EXIF 메타데이터를 전달하지 않습니다.Supabase Storage의 profile-images 버킷 및 기기 내 표시 캐시
친구 관계·설정양측 UUID, 요청자, 요청·수락 상태와 시각, 즐겨찾기, 오프라인 표시 설정, 본인만 보는 친구별 메모. 친구 요청·수락·취소·거절·삭제와 목록 관리에 사용합니다. 남용 방지를 위해 검색·요청의 사용자별 시간대와 횟수를 저장하며 친구 코드 검색어와 결과 자체를 저장하는 테이블은 없습니다.Supabase Database. 숨김 요청 대기 상태는 기기 내 파일
접속·운동 중 상태사용자·인증 세션·상태 세션·운동의 식별자, 앱 활성 상태, 현재 운동 거리, 갱신·유효 시각. 친구에게 접속·운동 중 상태와 현재 거리를 표시하고 오래된 상태 표시를 방지합니다.Supabase Database
친구 랭킹동기화된 완료 운동의 시작 시각과 계산 거리로 한국 시간 기준 월 누적 거리를 집계합니다. 본인과 수락된 친구의 UUID, 닉네임, 사진 경로, 월 누적 거리·순위를 반환합니다.Supabase Database에서 조회 시 집계

다른 사용자에게 표시되는 범위

로그인한 사용자가 정확한 친구 코드를 검색하면 친구가 아니어도 해당 사용자의 UUID, 닉네임, 친구 코드와 사진 경로를 받을 수 있습니다. 친구 요청 목록에도 상대방의 이 기본 프로필과 요청 시각이 제공됩니다. 수락된 친구에게는 상태 메시지와 접속·운동 중 상태 및 현재 거리도 제공됩니다. 이름·이메일 등 로그인 제공자 정보는 이 소셜 조회에 포함되지 않습니다.

프로필 사진 버킷은 비로그인 사용자에게 공개되지 않습니다. 다만 현재 Storage 접근 정책은 친구 여부를 구분하지 않고 로그인한 사용자에게 버킷 내 사진 읽기를 허용합니다. 따라서 사진은 친구에게만 공개되는 정보가 아닙니다. 사진 등록·변경·삭제는 본인 경로로 제한됩니다.

친구 랭킹은 월 누적 거리와 순위를 공유하며 개별 운동 기록 전체, 속도·경사, 수행 구간이나 루틴 내용을 공개하지 않습니다. 오프라인 표시는 접속·운동 중 상태를 숨기는 설정이며 프로필 검색이나 랭킹 공개 범위를 바꾸지는 않습니다. 친구별 메모는 작성자만 조회할 수 있습니다.

RunningMate는 현재 위치, 기기 주소록의 연락처, 카메라, 마이크 또는 운동 센서 데이터를 수집하는 기능을 구현하지 않았습니다. 다만 앱 내 친구 요청·수락 관계(소셜 그래프)는 친구 기능 제공을 위해 서버에서 처리하며, 이는 기기 주소록 접근과 구분됩니다. 광고, 사용자 행동 분석 또는 별도 crash reporting SDK도 포함하지 않습니다. 선택한 프로필 사진과 사용자가 생성·저장·공유하는 운동 카드 이미지는 아래와 같이 처리합니다.

3. 이용 목적

4. 외부 서비스와 처리 위탁

Supabase

Supabase Auth는 로그인·세션과 제공자 식별정보를, Database는 운동·루틴·프로필·친구 관계·상태·랭킹 조회를, Storage는 선택한 프로필 사진 파일을 처리합니다. 계정 삭제 함수는 사진 정리와 계정 삭제를 수행합니다. Supabase Auth에는 제공자가 전달한 식별자, 이메일 또는 기본 프로필 metadata가 포함될 수 있습니다. 저장 위치와 국외 처리 여부는 운영자가 선택한 Supabase 프로젝트 리전에 따릅니다.

Google

Android와 iOS의 공통 로그인 코드에서 openid, 이메일, 기본 프로필 범위를 요청하고 ID Token과 Access Token을 Supabase Auth에 전달합니다. 제공된 이름·이메일·사진 URL 등은 Supabase Auth의 인증 메타데이터에 저장될 수 있습니다. 앱이 별도 입력 화면에서 실명이나 이메일을 요청하지는 않으며, 앱에서 직접 설정하는 닉네임·사진과는 구분됩니다.

Kakao

KakaoTalk 또는 Kakao계정 로그인을 통해 ID Token을 발급하고 Supabase 인증에 전달합니다. Android와 iOS의 공통 코드에서 앱은 Kakao 사용자 정보 API를 별도로 호출하거나 추가 프로필·이메일 동의를 요청하지 않습니다. Supabase Auth는 ID Token에 전달된 식별정보와 제공된 경우의 이름·이메일 등을 처리합니다. 실제 전달 범위는 Kakao 동의·OpenID Connect 설정에 따르며, 모든 Kakao 로그인에서 이름·이메일을 받는 것은 아닙니다.

Android 시스템·TTS

화면이 꺼진 동안에도 사용자가 시작한 운동의 안내를 유지하기 위해 foreground service, WakeLock, 진동과 알림 기능을 사용합니다. 음성 안내는 사용자가 선택한 기기의 TTS 엔진에서 처리되며, 해당 엔진의 처리 방식은 기기 설정과 제공자 정책에 따라 달라질 수 있습니다. RunningMate가 음성 안내 문구를 자체 서버에 업로드하지는 않습니다.

iOS 시스템·TTS

iOS 음성 안내는 기기의 TTS 기능을 사용하며 다른 오디오와 함께 재생하도록 설정합니다. 로컬 알림 초기화 시 알림 표시·소리 권한을 요청합니다. Android의 foreground service와 WakeLock 기반 백그라운드 실행 설명은 iOS에 적용되지 않습니다.

사진 선택·저장·공유 및 기타 구성요소

image_picker는 사용자가 선택한 프로필 사진을 읽고, image 라이브러리는 기기에서 이미지를 가공합니다. gal은 사용자가 요청한 운동 카드의 갤러리 저장을, share_plus는 운영체제 공유 화면을 통한 외부 앱 전달을 처리합니다. 공유를 선택하면 카드와 공유 문구가 선택한 앱으로 전달되고 이후 처리는 해당 앱의 정책을 따릅니다. RunningMate가 운동 카드를 자체 서버에 자동 업로드하지는 않습니다. package_info_plus는 앱 버전 확인에, Android의 in_app_update는 Google Play 업데이트 확인·진행에 사용됩니다.

5. 기기 내 저장과 권한

RunningMate는 Local First 방식으로 동작합니다. 네트워크나 인증이 실패해도 운동 완료를 기기에 우선 보존합니다. Android: INTERNET, FOREGROUND_SERVICE, FOREGROUND_SERVICE_SPECIAL_USE, WAKE_LOCK, VIBRATE, POST_NOTIFICATIONS 권한을 기능 제공에 사용합니다. 병합 manifest에는 의존성으로 생체 인증 권한이 포함될 수 있으나 현재 앱 코드에는 생체 인증 기능이 없습니다.

사진 처리(공통): 프로필 사진은 시스템 갤러리 선택 화면에서 사용자가 선택한 파일만 읽으며 카메라 촬영 기능은 사용하지 않습니다. 사진 접근 허용 범위는 운영체제의 선택 화면과 권한 설정에 따릅니다. 운동 카드 저장 시에는 갤러리 접근 가능 여부를 확인하고 필요한 권한을 요청합니다. 사진 보관함 전체를 서버로 업로드하지는 않습니다.

iOS: 기기의 사진 선택·저장 기능과 로컬 알림·TTS를 사용합니다. 화면이 켜진 상태를 유지하는 플러그인도 사용하지만 Android와 같은 백그라운드 실행을 보장하지 않습니다. 사진·알림 접근은 iOS의 권한과 실행 환경에 따릅니다.

Debug 진단 로그는 token·이메일·운동 내용의 출력을 피하고 일부 계정 식별자는 축약합니다. 운영자가 진단 로그를 수집하는 별도 분석 서비스는 현재 포함되어 있지 않습니다.

6. 보관 및 삭제

계정 삭제 시 숨김 요청의 기기 내 보조 파일과 공통 앱 설정이 남을 수 있습니다. 생성된 운동 카드의 기기 내 임시 파일도 계정 삭제 시 일괄 제거되지 않으며, 다음 카드 파일 생성 시 오래된 파일 정리 대상이 됩니다. 갤러리나 외부 앱에 저장·공유한 사본과 다른 기기에 남은 오프라인 데이터는 원격 삭제만으로 즉시 제거되지 않습니다. 자세한 범위는 계정 삭제 안내를 참고해 주세요.

법령상 별도 보존 의무가 발생하는 경우에는 해당 목적과 기간 동안 분리하여 보관할 수 있습니다.

7. 이용자의 권리와 행사 방법

이용자는 앱에서 자신의 운동과 루틴을 확인·수정·삭제할 수 있고, 닉네임·상태 메시지·프로필 사진을 수정하거나 사진을 삭제할 수 있으며, Android와 iOS 모두 MY → 계정 관리 → 계정 삭제에서 RunningMate 계정을 삭제할 수 있습니다. 앱을 사용할 수 없는 경우에는 whddbs3265@gmail.com로 계정 삭제 요청을 시작할 수 있습니다. 본인 확인 없이 임의 계정을 삭제하지 않으며, 안전한 확인 절차와 필요한 정보를 회신합니다.

계정 및 데이터 삭제 안내 자세히 보기

8. 보안

데이터별 접근 범위에 따른 통제(사진과 소셜 정보의 범위는 위 2항 참고), Supabase Row Level Security, 인증된 RPC, account-level lock, 기기 내 삭제 fence를 사용합니다. 계정 삭제 capability의 raw secret은 서버에 저장하지 않고 hash만 저장하며, service-role key는 앱에 포함하지 않습니다.

9. 아동 관련 안내

RunningMate는 아동을 대상으로 설계된 서비스가 아닙니다. 연령 관련 별도 정보는 수집하지 않습니다. 보호자가 아동의 정보 처리와 관련해 조치가 필요하다고 판단하면 아래 문의처로 연락할 수 있습니다.

10. 방침 변경

기능, 외부 서비스 또는 관련 법령 변경으로 이 방침이 달라지면 개정 시행일과 변경 내용을 이 페이지에 공개합니다.

11. 문의

운영자: Park JongYun
이메일: whddbs3265@gmail.com