Bluesky가 스크린샷에 로고를 표시하는 방법
3 days ago
9
- Bluesky는 평소 Follow 버튼을 보여주지만, iOS에서 스크린샷을 찍으면 같은 자리에 로고가 나타나도록 구현함
- 2026년 1월 추가된 GrowthHack.tsx는 expo-privacy-sensitive 패키지로 화면과 스크린샷의 표시 요소를 다르게 처리함
- 실제 콘텐츠를 보안 UITextField의 레이어에 렌더링하면, iOS가 스크린샷에서 해당 레이어를 비우면서 뒤에 있던 Bluesky 로고가 드러남
- 앱 전환 화면에서는 로고가 나타나지 않으며, 전환 제스처 때 생성된 정적 스냅샷에 반응할 UITextField가 없기 때문일 수 있지만 확인된 원인은 아님
- 개인정보 보호 API의 영리한 활용인지 오용인지 논쟁이 있지만, Telegram과 Signal도 유사한 스크린샷 차단 방식을 사용함
보안 UITextField를 이용한 화면 전환
- Bluesky 구현은 mozzius가 2026년 1월 추가한 GrowthHack.tsx와 같은 개발자의 expo-privacy-sensitive에 들어 있음
- 패키지는 UITextField를 만들고 isSecureTextEntry를 true로 설정한 뒤, 실제 콘텐츠인 버튼을 필드의 .layer에 렌더링함
- 스크린샷을 찍으면 iOS가 보안 텍스트 필드의 레이어를 비워 버튼을 숨기고, 뒤에 계속 존재하던 Bluesky 로고를 노출함
- 다른 플랫폼에서는 콘텐츠를 마스킹하지 않고 그대로 렌더링함
- 앱 전환 중 촬영한 화면에서는 이 동작이 재현되지 않음
- iOS가 전환 제스처 시작 시 자체 스냅샷을 만들고, 이후 촬영에 반응할 실제 UITextField가 남아 있지 않기 때문일 수 있으나 이는 추정임
기존 사례와 개발자 반응
- 기능을 추가한 Pull Request 토론에서는 다수가 이 구현을 좋아하지 않았으며, 이후 스레드가 잠김
- 이 기법은 이미 알려져 있으며, Telegram의 비밀 채팅과 Signal도 유사한 방식으로 스크린샷을 차단함
- 개인정보 보호 API의 활용과 오용 사이에 논쟁의 여지가 있지만, 기존 메신저 앱에서도 쓰이는 만큼 Apple이 곧 차단할 가능성은 낮아 보임
-
Homepage
-
개발자
- Bluesky가 스크린샷에 로고를 표시하는 방법