Bluesky는 어떻게 스크린샷에만 로고를 띄울까요

Bluesky 앱에서는 게시물 오른쪽 위에 팔로우 버튼이 보여요. 그런데 iPhone으로 화면을 캡처하면 같은 자리에 Bluesky 로고가 나타나요. 앱이 캡처 버튼을 감지해 화면을 급히 바꾸는 방식은 아니에요. iOS가 보안 입력 필드를 캡처할 때 내용을 가리는 동작을 거꾸로 활용했어요. 1
핵심 요약
| 구분 | 내용 |
| 화면에서 보이는 요소 | 앱을 사용할 때는 팔로우 버튼이 보여요. |
| 스크린샷에 남는 요소 | iOS가 버튼 레이어를 비우면 뒤에 있던 Bluesky 로고가 드러나요. |
| 구현 수단 | `expo-privacy-sensitive`가 보안 `UITextField` 안에 실제 콘텐츠를 렌더링해요. |
| 적용 범위 | 글쓴이가 확인한 구현은 iOS에서 작동하고, 다른 플랫폼에서는 콘텐츠를 그대로 보여줘요. |
1. iOS의 캡처 보호 기능을 브랜딩에 활용했어요
Bluesky 앱 코드에는 2026년 1월 추가된 `GrowthHack.tsx`가 있어요. 이 컴포넌트는 `expo-privacy-sensitive` 패키지를 이용해 평소 화면과 스크린샷에 서로 다른 요소가 보이게 해요. 앱이 오픈소스로 공개돼 있어 실제 구현 파일과 패키지 코드도 확인할 수 있어요. 2
패키지는 iOS의 `UITextField`를 만들고 `isSecureTextEntry` 속성을 켜요. 보통 이 속성은 비밀번호 같은 민감한 입력값이 캡처에 남지 않도록 쓰여요. Bluesky는 화면에 보여 줄 팔로우 버튼을 이 보안 필드의 레이어 안에 렌더링했어요.
iOS가 스크린샷을 만들 때 보안 필드의 레이어를 비워요. 팔로우 버튼이 사라진 자리에 새 요소를 그리는 대신, 처음부터 그 뒤에 배치해 둔 Bluesky 로고가 보여요. 사용 중인 화면에는 버튼이 남고 저장된 이미지에는 로고가 남는 이유예요.
앱 전환 화면에서는 왜 팔로우 버튼이 보일까요
앱 전환 제스처 도중 캡처한 화면에는 팔로우 버튼이 그대로 보여요. 원문 글쓴이는 iOS가 제스처를 시작할 때 정적인 앱 스냅샷을 먼저 만들기 때문일 수 있다고 설명해요. 이 시점에는 캡처에 반응할 실제 `UITextField`가 없고, 이미 만들어진 이미지가 화면에 떠 있다는 추정이에요. iOS 내부 동작으로 확인된 원인은 아니므로 확정해서 보기는 어려워요. 2
작은 기능이지만 논쟁거리는 남아요
보안 API를 로고 노출에 쓰는 선택을 두고 개발자 반응은 갈렸어요. 해당 동작을 추가한 코드 토론에서는 API의 원래 목적과 맞지 않는다는 의견이 나왔고, 토론은 잠겼어요. 반면 Telegram 비밀 대화와 Signal도 같은 계열의 기법으로 캡처에서 콘텐츠를 숨긴 사례가 있어요. 이 기술 자체가 새로 등장한 방식은 아니에요. 2
Bluesky의 차이는 민감한 내용을 감추는 데서 한 걸음 더 나아간 점이에요. 가려진 콘텐츠 뒤에 로고를 미리 두고, 공유될 이미지에 브랜드가 남도록 설계했어요. 사용자가 별도 워터마크 기능을 실행하지 않아도 스크린샷 결과만 달라져요.
왜 중요한가요
모바일 앱이 제공하는 화면과 운영체제가 저장하는 캡처 이미지는 같지 않을 수 있어요. iOS 개발자는 보안 입력 필드의 캡처 처리 방식을 프라이버시 보호에 쓸 수 있고, Bluesky처럼 공유 이미지의 표현을 바꾸는 데도 활용할 수 있어요. 화면 캡처 결과까지 제품 경험의 일부로 설계한 사례예요. 2
다만 운영체제의 보안 동작에 기대는 구현은 iOS 변경에 영향을 받을 수 있어요. 앱 전환 화면처럼 모든 캡처 상황에서 같은 결과가 나오지도 않아요. 적용을 검토하는 팀이라면 기기와 iOS 버전, 앱 전환 상태, 화면 녹화까지 나눠 확인하는 편이 좋아요. 브랜드 노출을 위해 보안 API를 쓰는 선택이 사용자 기대와 맞는지도 함께 따져야 해요.
참고 자료
- Bluesky가 스크린샷에 로고를 표시하는 방법 — GeekNews
- How Bluesky draws its logo on screenshots — Tim Marinin
'IT & AI' 카테고리의 다른 글
| VisiGrid, 코드 에디터 감각을 스프레드시트에 옮겼어요 (0) | 2026.08.19 |
|---|---|
| Claude Code 주간 한도 50% 상향, 8월 31일까지 더 이어져요 (0) | 2026.08.19 |
| Qwen3.8 27B 지능 지수 52점, 점수보다 토큰 사용량을 함께 봐야 해요 (1) | 2026.08.18 |
| GPT-5.6 Sol 비전 성능, 탐지는 뛰었지만 OCR은 제자리였어요 (0) | 2026.08.18 |
| DuckDB v2.0 미리보기, 파일 안의 분석 DB가 서버로 넓어져요 (0) | 2026.08.18 |