핑핑(PingPing) 개인정보처리방침
시행일: 2026년 9월 23일 · 개정일: 2026년 10월 7일 · 버전 v1.3 · English version
핑핑은 친구 코드 6자리를 서로 나눈 사람에게 삐삐 숫자 코드(2~4자리)를 보내는 앱입니다. 계정·로그인·프로필이 없고, 서버에는 앱이 만든 임의 기기 식별자와 친구 코드, 그리고 주고받은 숫자 코드를 두며, 저장한 친구 이름과 차단 목록 같은 나머지 값은 기기 안에 있습니다. 1.1.0 의 「근처 친구」를 켠 동안에만 블루투스용 임시 신호와 차단 목록을 서버에 잠시 두고, 끄면 지웁니다(3항). 위치·이름·연락처·사진·글은 다루지 않습니다. 「친구 코드」 탭 하단에 Google AdMob 배너 광고 한 장을 보이며(5항), 분석 도구는 넣지 않았습니다.
앱 1.2.0 부터 화면은 한국어와 영어 두 가지이며 기기 언어 설정을 따릅니다. 영어 화면의 앱 이름은 PingPing 입니다. 언어와 상관없이 다루는 정보는 같고, 연령 기준만 다릅니다(6항). 영어 방침 전문은 이 페이지 아래에 있습니다.
1. 수집·이용하는 정보와 목적
핑핑은 계정이 없어 이름·이메일·전화번호를 받지 않습니다. 서비스 이용 과정에서 아래 정보를 처리합니다. 「기기」는 이 앱의 저장 공간을, 「서버」는 핑핑이 쓰는 클라우드 데이터베이스를 뜻합니다.
기기 식별자(앱이 만든 임의 UUID)
- 목적
- 기기 등록, 내 친구 코드 발급, 내 핑 목록 조회. 계정이 아니며 누구인지 알 수 있는 값이 아닙니다.
- 저장 위치
- 기기(pingping.device_id) · 서버 pingping_devices 표의 id 열
- 보유 기간
- 기기는 앱을 지울 때까지 보관합니다. 다시 설치하면 새 값이 만들어집니다. 서버 보관 기간은 3항과 같습니다.
내 친구 코드(숫자 6자리)
- 목적
- 다른 사람이 나에게 핑을 보낼 때 쓰는 주소입니다. 서버가 임의로 만들어 줍니다.
- 저장 위치
- 기기(pingping.my_code) · 서버 pingping_devices 표의 code 열
- 보유 기간
- 기기는 앱을 지울 때까지 보관합니다. 서버 보관 기간은 3항과 같습니다.
기기 등록 시각과 마지막 조회 시각
- 목적
- 오래 쓰지 않은 기기 행을 가려내는 기준입니다. 마지막 조회 시각은 기기 등록과 핑 목록 조회 때마다 갱신됩니다.
- 저장 위치
- 서버 pingping_devices 표의 created_at · last_seen_at 열
- 보유 기간
- 3항과 같습니다.
핑(보낸 코드 · 받은 코드 · 숫자 코드 2~4자리 · 보낸 시각)
- 목적
- 상대에게 핑을 전달하고, 되핑을 표시하고, 하루 3회 제한을 계산합니다. 근처 친구에서는 두 코드가 서로 핑을 주고받았는지 확인하는 데 씁니다. 글·사진·이름을 담는 열은 없습니다.
- 저장 위치
- 서버 pingping_pings 표
- 보유 기간
- 3항과 같습니다.
연령 확인 시각
- 목적
- 첫 실행에서 연령 확인(한국어 화면은 만 14세 이상, 영어 화면은 16세 이상)을 마쳤는지 기억합니다.
- 저장 위치
- 기기(pingping.age_confirmed_at)
- 보유 기간
- 앱을 지울 때까지 보관합니다. 서버로 보내지 않습니다.
저장한 친구 코드와 내가 붙인 이름
- 목적
- 하늘의 점과 핑 목록에 이름을 표시합니다. 새 코드에 핑을 보내면 그 코드는 이름 없이 자동으로 저장됩니다.
- 저장 위치
- 기기(pingping.friends)
- 보유 기간
- 친구 코드 화면에서 지우거나 앱을 지울 때까지 보관합니다. 서버로 보내지 않습니다.
차단한 코드 목록
- 목적
- 차단한 코드가 보낸 핑을 화면에서 걸러내고, 그 코드로 핑을 보내지 못하게 합니다. 근처 친구를 켠 동안에는 차단한 코드에게 나를 숨기는 데도 씁니다.
- 저장 위치
- 기기(pingping.blocked_codes). 근처 친구를 켠 동안만 서버 pingping_nearby_tokens 표의 hidden_from 열(최근 차단부터 200개)
- 보유 기간
- 기기는 차단을 풀거나 앱을 지울 때까지 보관합니다. 서버에 맡긴 목록은 근처 친구 임시 신호와 함께 지워집니다(끄면 바로, 길어야 15분).
연습 모드 설정과 근처 친구 안내 확인 여부
- 목적
- 서버 대신 기기 안 연습 친구와 주고받는 모드를 켰는지, 근처 친구의 첫 안내를 봤는지 기억합니다.
- 저장 위치
- 기기(pingping.practice_mode · pingping.nearby_intro_seen)
- 보유 기간
- 앱을 지울 때까지 보관합니다.
근처 친구 임시 신호(12바이트 난수)
- 목적
- 근처 친구를 켰을 때 블루투스로 내보내는 신호입니다. 켤 때마다 서버가 새로 만들고, 친구 코드나 이름이 들어 있지 않습니다. 서버는 이 신호가 서로 이어진 친구의 것인지 확인하는 데만 씁니다.
- 저장 위치
- 서버 pingping_nearby_tokens 표(내 기기와 묶임) · 블루투스 광고(서비스 UUID 하나)
- 보유 기간
- 길어야 15분 유효하고, 근처 친구를 끄면 바로 지웁니다. 앱이 갑자기 닫혀도 15분 뒤 효력이 끝나고 다음 정리 때 지워집니다.
근처 친구 마지막 확인 시각
- 목적
- 확인 요청이 너무 잦지 않게 막는 데만 씁니다(기기마다 4초에 한 번). 누구를 확인했는지는 남기지 않습니다.
- 저장 위치
- 서버 pingping_devices 표의 nearby_resolved_at 열(시각 하나, 매번 덮어씀)
- 보유 기간
- 기기 행과 같습니다(3항).
근처에서 받은 신호(확인 요청)
- 목적
- 내 휴대폰이 주변에서 받은 신호를 한 번에 32개까지 서버에 보내, 서로 이어진 친구의 신호만 친구 코드로 돌려받습니다.
- 저장 위치
- 저장하지 않음. 서버는 그 자리에서 확인만 하고 응답 뒤 버립니다.
- 보유 기간
- 저장하지 않습니다. 기기 메모리에서도 근처 친구를 끄면 비웁니다.
블루투스 신호 세기
- 목적
- 근처 친구를 「가까이 · 근처 · 조금 멀리」 중 하나로 어림합니다.
- 저장 위치
- 기기 메모리
- 보유 기간
- 20초가 지나면 버립니다. 서버로 보내지 않고 파일에도 쓰지 않습니다.
다음 정보는 다루지 않습니다.
- 위치. 위치 권한을 요청하지 않습니다. 하늘의 점 자리는 친구 코드로 계산한 자리이며 실제 위치·거리·방향과 무관합니다. 근처 친구는 블루투스 신호 세기만 쓰고, 좌표나 누가 언제 누구 근처에 있었는지에 대한 기록을 남기지 않습니다. Android 는 블루투스 검색 권한을 neverForLocation 으로 선언해 블루투스 검색으로 위치를 얻지 않습니다.
- 이름·연락처·이메일·전화번호. 친구에게 붙이는 이름은 기기 안에만 남습니다.
- 사진·글·프로필. 주고받는 것은 숫자 코드뿐이며 숫자 외의 글은 입력할 수 없습니다.
- 마이크·카메라 자료. 운영체제 광고 식별자는 핑핑 서버로 보내지 않으며, 5항의 Google 광고 SDK 만 광고 게재를 위해 다룰 수 있습니다.
2. 권한
- Android 는 인터넷(INTERNET) 권한을 선언하고, Google 광고 SDK(와 그 안의 androidx.work)가 빌드 때 ACCESS_NETWORK_STATE · AD_ID · ACCESS_ADSERVICES_AD_ID · ACCESS_ADSERVICES_ATTRIBUTION · ACCESS_ADSERVICES_TOPICS · WAKE_LOCK · FOREGROUND_SERVICE 권한을 함께 넣습니다. 모두 사용자에게 따로 묻지 않는 일반 권한입니다. 핑핑이 직접 선언한 포그라운드 서비스는 없고, 블루투스 작업을 백그라운드에서 하지 않습니다. 위치·마이크·카메라·연락처·사진·알림 권한을 요청하지 않습니다.
- 근처 친구(블루투스): Android 12 이상은 「근처 기기」 권한(BLUETOOTH_SCAN · BLUETOOTH_ADVERTISE · BLUETOOTH_CONNECT)을, iOS 는 블루투스 권한을 근처 친구를 처음 켤 때만 묻습니다. 앱을 시작할 때는 묻지 않습니다. BLUETOOTH_SCAN 은 neverForLocation 으로 선언해 블루투스 검색으로 위치를 얻지 않으며, 다른 라이브러리가 위치 권한을 끌어와도 매니페스트에서 지웁니다. Android 11 이하에서는 블루투스 라이브러리가 설치 때 자동으로 허용되는 일반 권한(BLUETOOTH · BLUETOOTH_ADMIN)을 넣지만, 근처 친구는 숨겨지고 권한도 묻지 않습니다. iOS 의 백그라운드 블루투스 모드는 쓰지 않습니다. 권한 안내 문구는 기기 언어(한국어 또는 영어)를 따릅니다.
- 핑핑 서버 접속은 연령 확인을 마친 뒤 서버 모드일 때만 합니다. 광고 SDK 도 연령 확인 뒤에만 시작하므로 확인 전에는 어떤 네트워크 요청도 없습니다. 연습 모드에서는 핑핑 서버에 접속하지 않고(광고는 연습 모드에서도 표시됩니다), 서버 접속 정보가 없는 빌드는 처음부터 연습 모드로 동작합니다. 네트워크가 끊기면 「서버에 닿지 못했어요」 안내와 다시 시도 버튼이 보입니다.
- 푸시 알림이 없습니다. 앱이 열려 있을 때 실시간 알림 채널 또는 30초 간격 조회로 핑이 도착합니다.
3. 서버 전송과 보관
서버는 Supabase 클라우드 데이터베이스입니다. 앱은 표를 직접 읽거나 쓰지 않고 서버 함수 여섯 개만 호출합니다.
- 기기 등록: 기기 식별자를 보내고 내 친구 코드를 받습니다.
- 내 핑 목록: 기기 식별자를 보내고 내 코드, 오늘 남은 횟수, 내 코드가 보낸 핑과 받은 핑 최근 200건을 받습니다.
- 핑 보내기: 기기 식별자, 상대 친구 코드, 숫자 코드를 보내고 결과와 남은 횟수를 받습니다.
- 근처 친구 켜기: 기기 식별자와 차단 목록(최근 차단부터 200개)을 보내고, 길어야 15분 유효한 임시 신호를 받습니다. 켜 둔 동안 차단을 늘리면 그 자리에서 새 신호로 바꿉니다.
- 근처 친구 확인: 기기 식별자와 주변에서 받은 신호(한 번에 32개까지)를 보내고, 그 가운데 서로 핑을 주고받은 친구의 신호만 친구 코드로 돌려받습니다. 상대가 언제 켰는지는 돌려주지 않습니다.
- 근처 친구 끄기: 기기 식별자를 보내면 내 임시 신호와 맡긴 차단 목록을 바로 지웁니다.
앱이 서버로 보내는 값은 기기 식별자, 상대 친구 코드, 숫자 코드, 그리고 근처 친구를 켰을 때의 차단 목록과 주변에서 받은 신호뿐입니다. 위치·이름·연락처·기기 모델·운영체제 광고 식별자·블루투스 신호 세기는 보내지 않습니다. 화면 언어 설정도 서버로 보내지 않습니다. 하루 3회 제한은 서버가 한국 시간 자정 기준으로 셉니다. 연습 모드에서는 서버로 아무것도 보내지 않습니다.
- 실시간 알림: 새 핑이 저장되면 서버가 받는 기기의 채널(pingping:device:기기 식별자)로 핑 id, 보낸 코드, 숫자 코드, 시각을 보냅니다. 채널 이름은 기기 식별자로 만들어지며, 식별자는 그 기기와 서버만 압니다. 다른 사용자에게는 친구 코드 6자리만 보입니다.
- 핑의 차단은 기기 안에서 걸러냅니다. 서버는 핑을 저장할 때 차단을 알지 못하므로 차단한 코드가 보낸 핑도 서버에는 저장되고, 차단을 풀면 다시 보입니다. 근처 친구를 켠 동안에만 차단한 코드에게 나를 숨기려고 차단 목록(최근 차단부터 200개)을 서버에 맡기고, 끄면 지웁니다.
- 근처 친구: 서로 핑을 주고받은 코드끼리(받은 핑에 답장 한 번으로도 이어집니다), 핑핑을 화면에 열어 둔 동안만, 둘 다 켰을 때만, 서로 차단하지 않았을 때만 동작합니다. 친구 목록에서 지우기만 해서는 이어짐이 풀리지 않으니(친구 목록은 기기 안에만 있습니다), 보이고 싶지 않은 코드는 차단해 주세요. 한 번 켜면 최대 10분이고, 10분이 지나거나 화면이 꺼지거나 앱을 나가면 바로 꺼집니다. 켜 둔 동안만 화면이 꺼지지 않게 합니다. Android 12 이상과 iOS 에서만 쓸 수 있습니다. 블루투스로 내보내는 것은 서비스 UUID 하나(근처 친구 표시용 고정 접두사와 임시 신호)뿐이고, 친구 코드·이름·기기 식별자·기기 이름은 넣지 않습니다. Android 는 연결을 받지 않는 신호만 내보내고 블루투스 연결 서버(GATT)를 열지 않습니다. iOS 는 운영체제 신호가 늘 연결을 받는 방식입니다(아래 알려진 한계 3). 화면에는 「가까이 · 근처 · 조금 멀리」 세 가지만 보이며 거리 숫자·방향·지도는 없습니다. 연습 모드에서는 블루투스와 서버를 쓰지 않습니다.
- 서로 핑을 주고받은 친구인지는 이미 있는 핑 기록으로 그때그때 확인하고, 친구 관계를 모아 두는 표를 따로 만들지 않습니다. 두 기기가 지금의 친구 코드를 받은 뒤에 오간 핑만 셉니다. 누가 언제 근처에 있었는지 저장하지 않습니다. 확인 요청에서 서버가 저장하는 것은 마지막 확인 시각 하나뿐이며, 확인하는 그 순간에는 「이 신호들이 한 휴대폰 근처에서 보였다」는 것을 서버가 알 수 있지만 저장하지 않습니다. 서비스 운영 기록에는 다른 기능과 같은 일반 접속 기록(IP·시각·호출한 함수 이름)만 남고 신호 값이나 상대 코드는 남지 않습니다.
- 보유 기간: 서버의 핑 행과 기기 행은 서비스 운영 기간 동안 보관합니다. 운영자는 30일이 지난 핑과 180일 동안 조회가 없는 기기 행을 지우는 정리 기능(pingping_prune)을 갖추고 있으며, 정리가 실행되기 전까지는 보관됩니다. 목록 조회는 최근 200건만 돌려줍니다. 근처 친구 임시 신호와 맡긴 차단 목록은 끄면 바로 지우고, 길어야 15분 뒤 효력이 끝나며, 효력이 끝난 신호는 다음 켜기·끄기 또는 정리 기능이 지웁니다.
- 앱을 지우면 기기 식별자를 잃어 서버 행과의 연결이 끊어집니다. 그 행은 정리 기능 또는 7항의 삭제 요청으로 지워집니다.
근처 친구의 알려진 한계
- 같은 곳에 있던 다른 사람이 신호를 받아 다른 곳에서 다시 내보내면, 친구 화면에 잘못 「근처」로 보일 수 있습니다. 내가 끄면 2분 안에 효력이 끝나고, 신호는 길어야 15분입니다.
- 블루투스 검색 앱을 켠 주변 사람은 「근처에 핑핑 근처 친구 신호가 있다」는 것은 알 수 있습니다. 신호만으로는 친구 코드나 핑핑 이름을 알 수 없습니다(휴대폰 이름은 3번). 한 번 켠 동안(최대 10분)은 신호가 같습니다.
- iPhone 에서 근처 친구를 켠 동안에는 주변 기기가 블루투스로 연결해 휴대폰 이름을 읽을 수 있습니다. iOS 의 신호가 늘 연결을 받는 방식이라 앱이 막을 수 없습니다. 휴대폰 이름에 실명을 쓰지 않기를 권합니다. Android 는 연결을 받지 않는 신호만 내보내 근처 친구 신호로는 휴대폰 이름이 읽히지 않습니다.
- 운영자가 서버에서 근처 친구를 멈추면 서버의 신호가 모두 지워져 그 순간부터 아무도 신호를 풀 수 없고, 켜 둔 기기는 늦어도 10분 안에(켜 둔 시간이 끝나면) 꺼집니다.
- 이어진 친구가 앱을 고쳐 쓰면 자기 신호를 내보내지 않고 나를 볼 수 있습니다. 이어진 친구에게만 해당하며, 보이고 싶지 않으면 차단하면 됩니다.
- 거리는 신호 세기로 어림한 것이라 벽·몸·주머니에 따라 틀릴 수 있습니다.
4. 처리 위탁·제3자 제공·국외 이전
서비스 제공을 위해 다음 사업자가 정보를 처리합니다.
- Supabase (클라우드 데이터베이스와 실시간 알림 채널 운영): 기기 식별자, 친구 코드, 핑의 저장과 전달, 근처 친구 임시 신호의 발급과 확인
- Google AdMob (앱 광고): 「친구 코드」 탭의 배너 광고를 위해 Google 광고 SDK 가 5항의 정보(광고 식별자, IP 기반 대략적 위치, 광고 노출·클릭, 진단)를 수집하고 Google 서버에서 처리합니다. 핑핑의 기기 식별자·친구 코드·핑은 전달하지 않습니다.
그 외 제3자에게 판매하거나 제공하지 않습니다. 다른 사용자에게 보이는 것은 내 친구 코드와 내가 보낸 숫자 코드, 보낸 시각이며, 근처 친구를 켠 경우 서로 핑을 주고받고 함께 켠 친구에게만 「가까이 · 근처 · 조금 멀리」 중 하나가 보입니다. Supabase 와 Google 은 국외에 서버를 둔 사업자이므로 위 정보는 국외에서 처리될 수 있습니다. 운영체제 음성 인식·분석 같은 다른 외부 서비스는 쓰지 않습니다.
5. 광고
핑핑은 「친구 코드」 탭 하단, 탭 막대 바로 위에 Google AdMob 배너 광고 한 장을 표시합니다. 하늘 홈, 핑 보내기, 연령 확인 화면, 설정 탭에는 광고가 없고, 전면 광고나 보상형 광고도 없습니다. 광고 SDK 는 연령 확인을 마친 뒤에만 시작합니다. Google 광고 SDK 는 광고 게재와 성과 측정을 위해 기기의 광고 식별자, IP 주소 기반의 대략적 위치(국가·지역 단위), 광고 노출·클릭 정보, 앱 성능·오류 진단 정보를 수집할 수 있습니다. 친구 코드, 핑 내용, 저장한 친구 이름, 차단 목록은 광고 SDK 에 전달되지 않으며, 1항의 기기 식별자는 앱이 만든 임의 값으로 운영체제 광고 ID 와 무관합니다.
- 추적하지 않습니다. iOS 에서는 앱 추적 투명성(ATT) 권한을 요청하지 않으며, 광고 식별자를 다른 회사의 앱·웹사이트 정보와 결합하는 추적에 사용하지 않습니다.
- 광고 등급. 광고는 청소년 이상 등급(T) 이하의 콘텐츠만 요청합니다.
- 동의와 선택. 유럽경제지역(EEA)·영국 이용자에게는 광고 표시 전에 동의 화면이 표시되며, 설정 탭의 「광고 개인정보 설정」에서 언제든 선택을 바꿀 수 있습니다. 다른 지역에서는 별도 동의가 필요하지 않아 이 버튼이 비활성으로 보입니다.
- 삭제와 문의. 광고 SDK 가 수집한 정보는 Google 이 처리하며 SLOX 는 개인 단위로 받지 않아 앱에서 지울 수 없습니다. Android 는 기기 설정의 「광고」에서 광고 ID 를 재설정하거나 삭제할 수 있습니다. Google 의 데이터 처리에 대한 자세한 내용은 Google 광고 정책을 참고하세요.
- 분석 도구는 없습니다. 사용 통계 SDK 를 넣지 않았습니다.
6. 아동의 개인정보
핑핑은 한국어 화면에서는 만 14세 이상, 영어 화면에서는 16세 이상만 쓸 수 있습니다. 첫 실행 화면에서 「저는 만 14세 이상이에요」(영어 화면은 「I'm 16 or older」)에 표시한 뒤에만 시작할 수 있고, 확인 전에는 서버에 접속하지 않고 광고 SDK 도 시작하지 않습니다. 계정이 없어 나이는 이용자의 자기 확인으로 받습니다. 확인은 한 번만 묻고, 그 뒤 기기 언어를 바꿔도 다시 묻지 않습니다. 이 기준 나이 미만 아동의 개인정보를 의도적으로 수집하지 않으며, 기준 나이 미만이 사용한 사실을 알게 되면 관련 서버 기록을 지웁니다.
7. 정보주체의 권리와 삭제 방법
- 앱 안에서 지우기: 친구 코드 화면의 「지우기」로 저장한 친구와 이름을 삭제하고, 「이름 바꾸기」로 이름을 고칩니다. 설정의 「차단 풀기」로 차단을 해제합니다.
- 근처 친구 끄기: 근처 친구를 끄면 서버의 임시 신호와 맡긴 차단 목록이 바로 지워집니다. 앱이 갑자기 닫혀도 신호는 길어야 15분 뒤 효력이 끝나고 다음 정리 때 지워집니다.
- 앱 삭제: 기기 식별자, 내 코드, 연령 확인 시각, 연습 모드 설정을 포함해 기기 안의 값이 모두 지워집니다. 앱 안에 전체 초기화 버튼은 없습니다.
- 서버 데이터 삭제 요청: 앱 안에서 서버 행을 직접 지우는 수단은 없습니다. 아래 이메일로 내 친구 코드 6자리를 알려 주시면 운영자가 그 코드의 기기 행과 그 코드가 보낸 핑·받은 핑을 지체 없이 지웁니다. 열람·정정·처리정지 요청도 같은 주소로 받습니다.
8. 안전성 확보 조치
- 서버 표는 행 수준 보안(RLS)을 켜고 앱 키에 접근 정책을 두지 않아, 앱이 표를 직접 읽거나 쓸 수 없습니다. 앱은 서버 함수 여섯 개만 호출할 수 있습니다.
- 서버 함수는 기기 식별자로 내 코드를 찾아 그 코드가 보낸 핑과 받은 핑만 돌려줍니다. 다른 사람의 핑은 조회할 수 없습니다.
- 코드 형식 검사, 하루 3회 제한, 내 코드로 보내기 차단은 서버에서 수행합니다.
- 근처 친구 신호 표도 앱 키로 직접 읽거나 쓸 수 없고, 「서로 핑」 판정 함수와 정리 함수는 앱에 열지 않았습니다. 확인 요청은 기기마다 4초에 한 번 · 한 번에 32개까지, 신호 발급은 기기마다 한 시간에 12개까지로 제한합니다.
- 기기 식별자는 다른 사용자에게 노출되지 않습니다. 설정의 앱 정보 화면에도 앞 8자리만 표시합니다.
- 서버 접속 정보(주소·키)는 저장소에 두지 않고 빌드할 때 넘깁니다. 정리 기능과 표 직접 접근은 관리자 권한으로만 가능합니다.
9. 개인정보 보호책임자와 문의처
- 서비스 제공자
- SLOX (핑핑 · PingPing)
- 개인정보 보호책임자
- 양석원
- 연락처
- namurobori@gmail.com
개인정보 침해에 대한 신고나 상담이 필요하면 아래 기관에 문의할 수 있습니다.
- 개인정보분쟁조정위원회 · 1833-6972 · kopico.go.kr
- 개인정보침해신고센터 · 118 · privacy.kisa.or.kr
- 대검찰청 사이버수사과 · 1301 · spo.go.kr
- 경찰청 사이버수사국 · 182 · ecrm.police.go.kr
10. 고지 의무
이 방침의 내용이 바뀌면 바뀐 내용과 시행일을 이 페이지에 적습니다. 이용자에게 불리하게 바뀌는 경우에는 시행일 30일 전에 이 페이지에 알립니다.
- 2026년 9월 23일 · v1.0 · 최초 시행
- 2026년 9월 24일 · v1.1 · 「친구 코드」 탭 하단 Google AdMob 배너 광고 도입. 5항을 「광고」로 바꾸고 권한·처리 위탁·국외 이전 문장을 고쳤습니다.
- 2026년 10월 1일 · v1.2 · 「근처 친구」(블루투스) 도입. 1 · 2 · 3 · 7항을 고쳤습니다(4항의 처리 위탁 · 보이는 정보, 8항의 함수 수도 함께 맞췄습니다). 앱 1.1.0 부터 적용합니다.
- 2026년 10월 7일 · v1.3 · 영어 화면 도입(영어 이름 PingPing)과 영어 방침 전문 추가. 연령 기준을 「한국어 화면 만 14세 · 영어 화면 16세」로 적고 1 · 2 · 5 · 6 · 7항을 맞췄습니다. 다루는 정보와 서버 처리는 바뀌지 않았습니다. 앱 1.2.0 부터 적용합니다.
PingPing (핑핑) Privacy Policy
Effective: September 23, 2026 · Revised: October 7, 2026 · Version 1.3
PingPing is a pager style app. People who have swapped six-digit friend codes send each other number codes of two to four digits. There is no account, login or profile. The server keeps a random device ID created by the app, your friend code and the number codes you send and receive. Everything else, such as the names you give friends and your block list, stays on your device. Only while Nearby friends (added in version 1.1.0) is on, a temporary Bluetooth token and your block list are briefly held on the server, and both are deleted when you turn it off (section 3). PingPing does not handle your location, name, contacts, photos or any text. It shows one Google AdMob banner at the bottom of the Friends tab (section 5) and includes no analytics tools.
From version 1.2.0, the app is available in English and Korean and follows your device's language settings. On Korean devices it is called 핑핑. The information it handles is the same in both languages; only the minimum age differs (section 6). The Korean policy above and this English policy describe the same practices.
1. Information we process and why
PingPing has no accounts, so we never ask for your name, email address or phone number. We process the information below. “Device” means the app's storage on your phone, and “server” means the cloud database PingPing uses.
Device ID (a random UUID created by the app)
- Purpose
- Registers your device, issues your friend code and fetches your pings. It is not an account and does not reveal who you are.
- Stored in
- Device (pingping.device_id) and the id column of the server table pingping_devices
- Kept for
- On the device until you delete the app. Reinstalling creates a new one. Server retention is described in section 3.
Your friend code (6 digits)
- Purpose
- The address other people use to ping you. The server assigns it at random.
- Stored in
- Device (pingping.my_code) and the code column of the server table pingping_devices
- Kept for
- On the device until you delete the app. Server retention is described in section 3.
Registration time and last seen time
- Purpose
- Used to find device rows that have not been used for a long time. The last seen time is updated each time the device registers or fetches its pings.
- Stored in
- The created_at and last_seen_at columns of the server table pingping_devices
- Kept for
- See section 3.
Pings (sender code, recipient code, a number code of 2 to 4 digits, time sent)
- Purpose
- Delivers your ping to the other person, shows ping backs and counts the daily limit of three pings. Nearby friends also uses them to check whether two codes have pinged each other. There are no columns for text, photos or names.
- Stored in
- The server table pingping_pings
- Kept for
- See section 3.
Time of your age confirmation
- Purpose
- Remembers that you completed the age check on first launch (16 or older in the English app, 14 or older in the Korean app).
- Stored in
- Device (pingping.age_confirmed_at)
- Kept for
- Until you delete the app. It is never sent to the server.
Saved friend codes and the names you give them
- Purpose
- Shows names for the dots in your sky and in your pings. When you ping a new code, it is saved automatically without a name.
- Stored in
- Device (pingping.friends)
- Kept for
- Until you remove it on the Friends tab or delete the app. It is never sent to the server.
Blocked codes
- Purpose
- Hides pings from blocked codes and stops you from pinging them. While Nearby friends is on, it is also used to hide you from codes you blocked.
- Stored in
- Device (pingping.blocked_codes). Only while Nearby friends is on, also the hidden_from column of the server table pingping_nearby_tokens (your 200 most recent blocks)
- Kept for
- On the device until you unblock the code or delete the app. The copy held on the server is deleted together with the temporary Nearby friends token (right away when you turn it off, after 15 minutes at most).
Practice mode setting and whether you have seen the Nearby friends intro
- Purpose
- Remembers whether you turned on the mode that trades pings with practice friends on your device instead of the server, and whether you have seen the first Nearby friends explanation.
- Stored in
- Device (pingping.practice_mode and pingping.nearby_intro_seen)
- Kept for
- Until you delete the app.
Temporary Nearby friends token (12 random bytes)
- Purpose
- The signal your phone sends over Bluetooth while Nearby friends is on. The server creates a new one each time you turn it on, and it contains no friend code or name. The server uses it only to check whether it belongs to a connected friend.
- Stored in
- The server table pingping_nearby_tokens (linked to your device) and a Bluetooth advertisement (one service UUID)
- Kept for
- Valid for 15 minutes at most and deleted as soon as you turn Nearby friends off. If the app closes unexpectedly, the token stops working after 15 minutes and is deleted at the next cleanup.
Time of your last Nearby friends check
- Purpose
- Used only to keep checks from being too frequent (once every 4 seconds per device). It does not record whom you checked.
- Stored in
- The nearby_resolved_at column of the server table pingping_devices (a single time, overwritten each time)
- Kept for
- Same as the device row (section 3).
Tokens your phone picks up nearby (check requests)
- Purpose
- Your phone sends the tokens it picked up nearby to the server, up to 32 at a time, and gets back friend codes only for the tokens that belong to connected friends.
- Stored in
- Not stored. The server checks them on the spot and discards them after replying.
- Kept for
- Not stored. They are also cleared from your phone's memory when you turn Nearby friends off.
Bluetooth signal strength
- Purpose
- Gives a rough sense of whether a nearby friend is Close, Nearby or A bit far.
- Stored in
- Device memory
- Kept for
- Discarded after 20 seconds. It is never sent to the server or written to a file.
We do not handle the following.
- Location. PingPing does not ask for location permission. A dot's place in your sky is calculated from its friend code and has nothing to do with real location, distance or direction. Nearby friends uses only Bluetooth signal strength and keeps no record of coordinates, or of who was near whom and when. On Android, the Bluetooth scan permission is declared with neverForLocation, so Bluetooth scanning is never used to find your location.
- Names, contacts, email addresses and phone numbers. The names you give friends stay on your device.
- Photos, text and profiles. Only number codes are exchanged, and you cannot type anything other than digits.
- Microphone and camera data. The operating system advertising ID is never sent to the PingPing server. Only the Google ads SDK described in section 5 may use it to serve ads.
2. Permissions
- On Android, PingPing declares the internet (INTERNET) permission. At build time, the Google ads SDK (and the androidx.work library inside it) adds ACCESS_NETWORK_STATE, AD_ID, ACCESS_ADSERVICES_AD_ID, ACCESS_ADSERVICES_ATTRIBUTION, ACCESS_ADSERVICES_TOPICS, WAKE_LOCK and FOREGROUND_SERVICE. These are all normal permissions that never show a prompt. PingPing declares no foreground service of its own and does no Bluetooth work in the background. It does not ask for location, microphone, camera, contacts, photos or notification permissions.
- Nearby friends (Bluetooth): the Nearby devices permission on Android 12 and later (BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, BLUETOOTH_CONNECT) and the Bluetooth permission on iOS are requested only the first time you turn on Nearby friends, never when the app starts. BLUETOOTH_SCAN is declared with neverForLocation, so Bluetooth scanning is not used to find your location, and if another library pulls in a location permission, it is removed from the manifest. On Android 11 and earlier, the Bluetooth library adds normal permissions that are granted at install (BLUETOOTH, BLUETOOTH_ADMIN), but Nearby friends is hidden and no permission is requested. The iOS background Bluetooth mode is not used. Permission prompts follow your device language (English or Korean).
- PingPing connects to its server only after you complete the age check, and only when it is not in practice mode. The ads SDK also starts only after the age check, so nothing goes over the network before you confirm. In practice mode, PingPing does not connect to its server (ads are still shown), and builds without server settings run in practice mode from the start. If the network drops, you see a “Couldn't reach the server” message with a Try again button.
- There are no push notifications. While the app is open, pings arrive through a realtime channel or a check every 30 seconds.
3. What is sent to the server and how long it is kept
The server is a Supabase cloud database. The app never reads or writes its tables directly. It calls only six server functions.
- Register device: sends the device ID and receives your friend code.
- My pings: sends the device ID and receives your code, how many pings you have left today, and the 200 most recent pings sent or received by your code.
- Send ping: sends the device ID, the friend's code and the number code, and receives the result and how many pings you have left.
- Turn on Nearby friends: sends the device ID and your block list (your 200 most recent blocks), and receives a temporary token valid for 15 minutes at most. If you block a code while it is on, the token is replaced right away.
- Nearby friends check: sends the device ID and the tokens picked up nearby (up to 32 at a time), and receives friend codes only for the tokens that belong to friends you have traded pings with. It never reveals when the other person turned the feature on.
- Turn off Nearby friends: sends the device ID, and the server deletes your temporary token and the block list it was holding right away.
The app sends only the device ID, the friend's code, the number code and, while Nearby friends is on, your block list and the tokens picked up nearby. It never sends your location, names, contacts, device model, the operating system advertising ID or Bluetooth signal strength, and it does not send your language setting either. The server counts the daily limit of three pings and resets it at midnight Korea time (15:00 UTC). In practice mode, nothing is sent to the server.
- Realtime delivery: when a new ping is saved, the server sends the ping ID, sender code, number code and time to the recipient's channel (pingping:device:<device ID>). The channel name is based on the device ID, which only that device and the server know. Other users only ever see your six-digit friend code.
- Blocking happens on your device. The server does not know about blocks when it saves a ping, so pings from blocked codes are still stored on the server and appear again if you unblock. Only while Nearby friends is on, your block list (your 200 most recent blocks) is held on the server so that blocked codes cannot see you, and it is deleted when you turn the feature off.
- Nearby friends works only between codes that have pinged each other (a single ping back is enough), only while PingPing is open on screen, only when both of you turn it on, and only if neither of you has blocked the other. Removing a friend from your list does not undo the connection, because your friend list exists only on your device, so block any code you do not want to see you. Each session lasts up to 10 minutes and ends as soon as 10 minutes pass, the screen turns off or you leave the app. The screen stays awake only while it is on. It works on iPhone and on Android 12 or later. Over Bluetooth, PingPing advertises only one service UUID (a fixed Nearby friends prefix plus the temporary token) and never your friend code, names, device ID or device name. On Android it advertises a non-connectable signal and does not open a Bluetooth connection server (GATT). On iOS, system advertisements always accept connections (see known limit 3 below). The screen shows only Close, Nearby or A bit far, with no distance in numbers, no direction and no map. Practice mode uses neither Bluetooth nor the server.
- Whether two codes have pinged each other is checked against existing ping records each time, and no separate table of friendships is kept. Only pings exchanged after both devices received their current friend codes count. We do not store who was nearby or when. From a check request, the server stores only the time of your last check. At the moment of a check, the server can tell that a set of tokens was picked up near one phone, but it does not store that. Service logs keep only the same general access records as other features (IP address, time and the name of the function called), never token values or the other person's code.
- Retention: ping rows and device rows on the server are kept while the service is running. The operator has a cleanup routine (pingping_prune) that deletes pings older than 30 days and device rows with no activity for 180 days; until it runs, rows remain. The pings list returns only the 200 most recent pings. Temporary Nearby friends tokens and the block list held with them are deleted as soon as you turn the feature off and stop working after 15 minutes at most. Expired tokens are deleted the next time someone turns the feature on or off, or by the cleanup routine.
- If you delete the app, the device ID is lost and the link to your server rows is broken. Those rows are removed by the cleanup routine or by a deletion request (section 7).
Known limits of Nearby friends
- If someone in the same place picks up your token and broadcasts it again somewhere else, your friend's screen could wrongly show you as nearby. After you turn the feature off, your token stops working within 2 minutes, and a token lasts 15 minutes at most.
- People nearby running a Bluetooth scanner app can tell that a PingPing Nearby friends signal is present. The signal alone does not reveal a friend code or a name in PingPing (for your phone's name, see 3). The token stays the same for one session (up to 10 minutes).
- On iPhone, while Nearby friends is on, nearby devices can connect over Bluetooth and read your phone's name. iOS advertisements always accept connections, so the app cannot prevent this. We recommend not using your real name as your phone's name. On Android, PingPing advertises a non-connectable signal, so your phone's name cannot be read through it.
- If the operator pauses Nearby friends on the server, all tokens on the server are deleted, so nobody can resolve them from that moment, and devices that have it on switch off within 10 minutes at the latest (when their session ends).
- A connected friend using a modified app could see you without advertising their own token. This applies only to connected friends. If you do not want to be seen, block them.
- Distance is estimated from signal strength, so walls, bodies and pockets can make it wrong.
4. Service providers, sharing and international transfers
The following companies process information so we can provide the service.
- Supabase (cloud database and realtime channels): stores and delivers device IDs, friend codes and pings, and issues and checks temporary Nearby friends tokens.
- Google AdMob (in-app ads): to show the banner on the Friends tab, the Google ads SDK collects the information described in section 5 (advertising ID, approximate location based on IP, ad views and clicks, diagnostics) and processes it on Google's servers. PingPing's device ID, friend codes and pings are never passed to it.
We do not sell your information or share it with anyone else. Other users can see your friend code and the number codes you send, with the time sent. With Nearby friends, only friends who have traded pings with you and have the feature on at the same time can see you as Close, Nearby or A bit far. Supabase and Google run servers in several countries, so this information may be processed outside your country, including outside Korea. We use no other outside services, such as speech recognition or analytics.
5. Ads
PingPing shows one Google AdMob banner at the bottom of the Friends tab, just above the tab bar. Home (your sky), Send, the age check screen and Settings have no ads, and there are no interstitial or rewarded ads. The ads SDK starts only after you complete the age check. To serve and measure ads, the Google Mobile Ads SDK may collect your device's advertising ID, approximate location based on your IP address (country or region level), ad views and clicks, and app performance and crash diagnostics. Friend codes, pings, saved friend names and your block list are never passed to the ads SDK, and the device ID in section 1 is a random value created by the app, unrelated to the operating system advertising ID.
- No tracking. On iOS, PingPing does not ask for App Tracking Transparency (ATT) permission and does not use the advertising ID to track you across other companies' apps or websites.
- Ad content rating. Ads are requested with a maximum content rating of T (Teen).
- Consent and choices. Users in the European Economic Area (EEA) and the UK see a consent form before any ad is shown and can change their choice at any time with Ad privacy settings in the Settings tab. Elsewhere, no extra consent is needed, so the button is unavailable and shows “Not needed in your region.”
- Deletion and questions. Information collected by the ads SDK is processed by Google. SLOX does not receive it at the individual level, so it cannot be deleted from within the app. On Android, you can reset or delete your advertising ID under Ads in your device settings. For details on how Google processes this data, see Google's advertising policy.
- No analytics. PingPing includes no usage analytics SDKs.
6. Children
PingPing is for people 16 or older in the English app and 14 or older in the Korean app. On first launch you can start only after checking “I'm 16 or older” (in the Korean app, “저는 만 14세 이상이에요”). Until you do, the app does not connect to its server or start the ads SDK. Because there are no accounts, your age is self-declared. The question is asked once; if you change your device language later, it is not asked again. We do not knowingly collect personal information from children under these ages, and if we learn that a child under the minimum age has used PingPing, we delete the related server records.
7. Your rights and how to delete your data
- In the app: on the Friends tab, Remove deletes a saved friend and its name, and Rename changes the name. In Settings, Unblock removes a block.
- Turning off Nearby friends: the temporary token and block list on the server are deleted right away. If the app closes unexpectedly, the token stops working within 15 minutes and is deleted at the next cleanup.
- Deleting the app: everything on the device is deleted, including the device ID, your code, your age confirmation and the practice mode setting. There is no reset-all button in the app.
- Deleting server data: there is no way to delete server rows from inside the app. Email us your six-digit friend code at the address below, and the operator will promptly delete that code's device row and every ping it sent or received. Requests to access or correct your data, or to stop processing it, go to the same address.
- Users in the EEA and UK: we process the server data above because it is needed to provide the features you use, such as delivering pings and applying the daily limit. Personalized ads depend on the choice you make in Google's consent form. You may also object to or restrict processing, and you can complain to your local data protection authority.
Contact: namurobori@gmail.com
8. Security
- Row level security (RLS) is enabled on the server tables, and the app key has no access policies, so the app cannot read or write the tables directly. It can only call the six server functions.
- The server functions look up your code from your device ID and return only the pings sent or received by that code. Nobody can look up other people's pings.
- Code format checks, the daily limit of three pings and the block on pinging your own code are enforced on the server.
- The Nearby friends token table cannot be read or written with the app key either, and the functions that decide whether two codes have pinged each other, and that clean up old tokens, are not available to the app. Checks are limited to one every 4 seconds and 32 tokens per request for each device, and token issuing to 12 per hour for each device.
- Your device ID is never shown to other users. Even the About section in Settings shows only its first 8 characters.
- Server connection details (address and key) are not kept in the source repository; they are supplied at build time. The cleanup routine and direct table access require admin rights.
9. Privacy officer and contact
- Service provider
- SLOX (PingPing)
- Privacy officer
- Seokwon Yang (양석원)
- Contact
- namurobori@gmail.com
Users in Korea can also contact the following organizations to report a privacy violation or get advice: the Personal Information Dispute Mediation Committee (1833-6972, kopico.go.kr), the Personal Information Infringement Report Center (118, privacy.kisa.or.kr), the Supreme Prosecutors' Office Cyber Investigation Division (1301, spo.go.kr) and the Korean National Police Agency Cyber Bureau (182, ecrm.police.go.kr).
10. Changes to this policy
If this policy changes, we will post the changes and their effective date on this page. If a change is unfavorable to users, we will post it on this page 30 days before it takes effect.
- September 23, 2026 · v1.0 · First version.
- September 24, 2026 · v1.1 · Added one Google AdMob banner at the bottom of the Friends tab. Section 5 became Ads, and the permissions, service provider and international transfer text was updated.
- October 1, 2026 · v1.2 · Added Nearby friends (Bluetooth). Updated sections 1, 2, 3 and 7, along with the service providers and what others can see in section 4 and the number of server functions in section 8. Applies from app version 1.1.0.
- October 7, 2026 · v1.3 · Added the English app (English name PingPing) and this full English policy. The minimum age is now stated as 16 in the English app and 14 in the Korean app, and sections 1, 2, 5, 6 and 7 were updated to match. The information we handle and how the server processes it are unchanged. Applies from app version 1.2.0.