Protein Ring 개인정보 처리방침
시행일: 2026-09-07
개요
Protein Ring은 Apple Watch 동반 앱과 함께 제공되는 iPhone 앱으로, 단백질 목표를 설정하고, 자신의 말로 식사를 기록하고, 추정치를 확인하고, 하루별 누적 결과를 볼 수 있게 도와드려요. 저희는 로그인, 식사와 플랜 저장, 영양 추정, 구독 처리, 앱 사용 방식 이해, 충돌 수정에 필요한 최소한의 데이터만 수집해요.
수집하는 데이터
계정 데이터
- 로그인에 사용하는 이메일 주소 또는 로그인 제공자 계정(Apple 또는 Google)이에요.
- Supabase 사용자 ID와 로그인 세션 데이터예요.
- 계정 상태, 로그인 및 로그아웃 이벤트, 삭제 상태예요.
플랜 데이터
- 선택한 목표와 주당 운동 일수예요.
- 플랜 크기를 정하는 데 사용하는 신체 정보예요: 체중, 키, 나이예요. 직접 입력하시거나 Apple Health에서 체중, 키, 생년월일을 가져올 수 있어요. 생년월일은 iPhone에만 남아 있고, 여기서 계산된 나이만 사용해요.
- 서버가 이 정보들로 계산하는 플랜이에요: 칼로리, 단백질, 탄수화물, 지방, 식이섬유 목표와 이후 조정값이에요.
- 리마인더 설정이에요. 리마인더는 기기에서 예약되는 로컬 알림이며, 관련 정보는 저희에게 전송되지 않아요.
식사 및 영양 데이터
- 직접 입력하거나 받아쓰기한 식사 텍스트예요. 받아쓰기는 iPhone에서는 키보드 자체 마이크를 사용하고 Apple Watch에서는 시스템 키보드를 사용해요. 저희는 단어만 받으며 오디오를 받지 않고, Protein Ring은 녹음을 저장하지 않아요.
- 그 텍스트로 만든 추정치예요: 음식 항목, 수량, 칼로리, 단백질, 탄수화물, 지방, 식이섬유 및 기타 영양소, FoodData Central 음식 식별자, 신뢰도, 그리고 확인 질문에 대한 답변이에요.
- 식사 기록과 이를 바탕으로 서버에서 만든 읽기값이에요: 일별 합계, 목표를 달성한 날짜, 최근 28일 평균이에요.
- 전송되지 않은 식사 초안과 대기 중인 Watch 전송이 기기에 저장되며, 전송될 때까지 보관돼요.
Apple Health 데이터
Apple의 자체 안내창에서 권한을 주신 경우에만 사용해요:
- 읽기: 플랜을 준비하기 위한 체중, 키, 생년월일, 그리고 활동 맥락을 보여드리기 위한 활동 에너지와 안정 시 에너지예요. 가져온 값은 사용되기 전에 검토하실 수 있어요. 생년월일은 저희 서버로 절대 전송되지 않아요.
- 쓰기: 확인하신 체중과 키, 그리고 “저장한 식사를 건강 앱에 추가”를 켠 경우 각 저장된 식사의 칼로리, 단백질, 탄수화물, 지방 및 영양소예요. Protein Ring에서 식사를 수정하거나 삭제하면, 해당하는 Apple Health 항목이 교체되거나 삭제돼요.
- Apple Health 데이터는 이러한 기능을 제공하는 데만 사용돼요. 광고나 마케팅에 사용되지 않고, 판매되지 않으며, Apple의 HealthKit 규칙에 따라 제3자와 공유되지 않아요.
- Protein Ring 계정을 삭제해도 이미 Apple Health에 기록된 데이터는 삭제되지 않아요. 건강 앱에서 직접 삭제하실 수 있어요.
위젯 및 실시간 활동
오늘의 링, 남은 단백질, 최근 식사는 Protein Ring의 위젯과 잠금 화면 활동이 사용하는 공유 컨테이너에 기기 내로 저장돼요. 이 데이터는 이러한 기능을 위해 기기를 벗어나지 않아요.
구매 및 권한 데이터
- RevenueCat과 App Store에서 반환되는 구독 플랜 선택, 제품 식별자, 구매 상태, 복원 상태, 권한 상태예요.
- 결제 카드 정보는 저희가 절대 보지 않으며, 결제는 Apple이 처리해요.
분석 데이터
- 로그인 전의 익명 ID와 로그인 후의 Supabase 사용자 ID예요.
- 설정 진행 상황, 플랜 화면 조회, 구매 시작 및 결과, 기록된 식사, 추정 성공 또는 실패, 확인 질문, 리마인더, Apple Health 연결과 같은 앱 이벤트예요. 여기에 플랫폼, 로컬 날짜, 지연 시간, 항목 수, 플랜 식별자 같은 정제된 속성이 포함돼요.
- 식사 텍스트와 이메일 주소는 분석에서 차단돼요.
- Protein Ring이 물어볼 때(첫 식사 이후이며, 환영 화면에서는 묻지 않아요) 추적을 허용하면, 어떤 광고나 링크를 통해 오셨는지 알기 위해 Singular가 광고 식별자를 받아요. 거절하면 광고 식별자는 읽지 않아요. 그래도 Singular는 Protein Ring 안에만 머무는 공급업체 식별자로 설치와 세션을 집계해요.
- 프로덕션 Protein Ring 웹사이트에서는 페이지 경로, 선택된 행동 유도 버튼, 선택된 앱 스토어, 대략적인 기기 플랫폼, 유입 웹사이트 호스트, 허용 목록에 있는 캠페인 태그를 수집해요. 이때 익명 ID는 현재 브라우저 탭 동안만 유지돼요. 웹사이트 분석에서는 URL 쿼리 문자열, 원시 브라우저 사용자 에이전트 텍스트, 이메일 주소, 사람 프로필을 전송하지 않아요. 웹사이트 분석은 로컬, 개발, 프리뷰 배포에서는 꺼져 있어요.
충돌 및 성능 진단
- 앱 오류와 충돌, 앱 버전과 릴리스, 환경, 기기 및 OS 정보, 그리고 앱 시작, 로그인, 권한 로딩, 식사 추정의 성능 구간이에요.
- Sentry로 전송되는 유일한 사용자 식별자는 Supabase 사용자 ID예요.
- 진단이 전송되기 전에 식사 텍스트, 프롬프트, 이메일, 토큰, 비밀값, 쿠키, 인증 헤더, API 키는 모두 제거돼요.
데이터 사용 방법
- 로그인 상태를 유지하고 세션을 유지해요.
- 식사, 플랜, 설정을 저장하고 동기화해요.
- 식사 텍스트를 음식 항목과 영양 추정치로 바꿔요.
- FoodData Central과 음식을 대조하고 공통 영양 참조값을 캐시해요.
- 서버에서 플랜과 28일 읽기값을 만들어요.
- 구독을 활성화하고 구매를 복원해요.
- 허용하신 경우 Apple Health에서 읽고, Apple Health에 써요.
- 지원, 내보내기, 개인정보, 삭제 요청에 답해요.
- 초기 설정, 식사 기록, 플랜 페이지, 유지율을 개선해요.
- 어떤 웹사이트 페이지와 설치 행동이 방문자를 App Store로 이어지게 하는지 이해해요.
- TestFlight와 프로덕션에서 충돌과 느린 경로를 찾아 수정해요.
처리자 및 서비스 제공업체
| 제공업체 | 역할 | 처리하는 데이터 |
|---|---|---|
| Supabase | 계정 데이터에 대한 로그인, 데이터베이스, Edge Function 실행 환경이에요. | 계정 식별자, 플랜, 식사, 설정, 세션 메타데이터, 삭제 및 내보내기 작업이에요. |
| OpenAI | 최선의 노력으로 수행되는 다국어 식사 파싱이며, 저희 Edge Functions에서만 호출돼요. | 사용자가 제출한 식사 텍스트와 음식 항목 또는 확인 질문을 반환하는 데 필요한 맥락이에요. |
| USDA FoodData Central | 영양 참조 조회이며, 저희 Edge Functions에서만 호출돼요. | 음식 검색어, FoodData Central 음식 ID, 공개 영양 참조 데이터예요. |
| RevenueCat | 구독 권한 및 구매 상태예요. | 앱 사용자 ID, 제품 식별자, 구독 상태, 복원 상태, 스토어 거래 및 권한 메타데이터예요. |
| Singular | 어떤 광고나 링크를 통해 앱을 설치했는지, 그 설치가 구독으로 이어졌는지 확인하는 마케팅 어트리뷰션이에요. | 공급업체 식별자, 앱 사용자 ID, 설치와 세션 이벤트, RevenueCat에서 오는 구독 이벤트예요. 광고 식별자는 추적을 허용한 경우에만 받아요. 식사 텍스트, 건강 수치, 플랜은 절대 포함되지 않아요. |
| Apple(App Store, StoreKit, Sign in with Apple, HealthKit) | 결제 및 구독 관리, 로그인, 기기 내 Health 저장소예요. | Apple이 처리하는 App Store 구매 및 구독 데이터, Sign in with Apple 식별자, 기기 내 Apple Health에 남아 있는 Health 데이터예요. |
| Google(Sign-In) | 선택적 로그인 제공자예요. | 로그인에 사용하는 Google 계정 식별자와 이메일이에요. |
| PostHog | 제품 및 웹사이트 분석, 그리고 세션 중 앱 화면 녹화예요(입력한 식사 텍스트, 음식, 신체 정보는 녹화 전에 가려져요). | 정제된 이벤트 이름과 속성, 익명 ID, 로그인 후 Supabase 사용자 ID, 익명 브라우저 탭 ID, 페이지 경로, 대략적인 플랫폼, 타임스탬프예요. |
| Sentry | 충돌 보고 및 성능 모니터링이에요. | 오류, 충돌 진단, 릴리스 및 환경 태그, 정제된 성능 구간, Supabase 사용자 ID예요. |
OpenAI와 FoodData Central의 API 키는 서버 쪽 Edge Functions에 있으며 앱에 포함되지 않아요. Singular의 측정 SDK는 iPhone 앱에 있는 유일한 어트리뷰션 SDK로, 식사 텍스트, 건강 수치, 플랜을 받지 않으며 추적을 허용한 경우에만 광고 식별자를 읽어요. Android 앱이 출시되면 이 정책은 Google Play 결제에 맞춰 먼저 업데이트돼요.
데이터 공유
저희는 개인정보를 판매하지 않아요. 앱 운영, 구매 처리, 식사 추정, 분석, 오류 진단, 또는 사용자의 요청과 법 준수를 위해 필요한 경우에만 위의 처리자와 데이터를 공유해요.
데이터 보관
계정, 플랜, 식사는 계정이 활성 상태인 동안 보관돼요. 공유된 FoodData Central 참조 음식은 사용자의 기록이 아니기 때문에 계정 삭제 후에도 남아 있을 수 있어요. 계정 삭제가 성공적으로 완료되면 앱은 기기의 로컬 상태를 지워요: 전송되지 않은 초안, 공유 위젯 컨테이너, 리마인더 설정, 환경설정이에요. 저희가 Apple Health에 쓰도록 요청받은 데이터는 Apple Health에 남아 있어요.
계정 삭제
나 › 계정 삭제에서 계정을 삭제하실 수 있어요. 삭제하면 Supabase에서 식사, 식사 항목, 목표, 프로필이 제거된 뒤 Supabase 사용자도 삭제돼요. 구독은 Apple이 청구하며 계정 삭제로 종료되지 않아요. Apple Account 설정에서 구독을 취소하지 않으면 계속 갱신돼요.
데이터 내보내기 및 지원
나 › 내 데이터 요청을 누르면 계정 정보가 적힌 이메일이 support@proteinring.com으로 작성돼요. 저희는 사용자 소유 기록을 바탕으로 이를 처리해요. 나 › 기기 데이터 내보내기를 누르면 이 iPhone에 있는 파일을 받을 수 있어요.
개인정보, 삭제, 지원, 내보내기 관련 문의는 support@proteinring.com으로 보내 주세요.
보안
Protein Ring은 Supabase 인증, 행 수준 접근 규칙, 비공개 API 키를 위한 서버 측 Edge Functions, 그리고 앱이 기기에서 필요로 하는 상태에 한한 기기 내 저장소를 사용해요. 어떤 보안 시스템도 완벽하지는 않지만, 프로덕션 비밀값은 앱 번들과 저장소에 남지 않아요.
변경 사항
앱이 바뀌면 이 방침도 업데이트될 수 있어요. 게시된 방침에는 현재 시행일이 표시되며, 나와 App Store 목록에서 연결되어 있어요.