Web Analytics
본문으로 건너뛰기

useSGScreenShot 새로움 ✨

버전

v2.0.0+부터 사용 가능

스크린샷 이벤트를 감지하기 위한 React 훅입니다. v1.x의 registerScreenshotEventListener를 대체합니다.

Core Function

function useSGScreenShot(
listener?: (event: ScreenGuardScreenShotPathDataObject) => void
): {
screenshotData: ScreenGuardScreenShotPathDataObject | null;
activationStatus: ScreenGuardHookData | null;
}

매개변수

이름필수 여부타입설명
listener아니요function각 스크린샷 이벤트 발생 시 호출될 선택적 콜백 함수

반환 값

이름타입설명
screenshotDataobject | null마지막으로 캡처된 스크린샷에 대한 데이터
activationStatusobject | nullScreenGuard의 현재 활성화 상태

screenshotData 객체

interface ScreenGuardScreenShotPathDataObject {
path?: string;
name?: string;
type?: string;
}
필드타입설명
pathstring | undefined캡처된 스크린샷의 전체 파일 경로 (예: /var/mobile/.../screenshot.png). initSettings()에서 getScreenshotPath: true로 설정된 경우에만 사용 가능
namestring | undefined스크린샷 파일 이름 (예: screenshot_2024.png)
typestring | undefined파일 확장자/타입 (예: 'png', 'jpg')

activationStatus 객체

interface ScreenGuardHookData {
method: string;
isActivated: boolean;
}
필드타입설명
methodstring현재 활성화된 방지 방법. 가능한 값: 'blur', 'image', 'color', '' (비활성화 시 빈 문자열)
isActivatedbooleanScreenGuard가 현재 활성화되어 있으면 true, 아니면 false

예제 코드

상태(state)와 함께 사용하는 기본 예제:

import React from 'react';
import { View, Text } from 'react-native';
import ScreenGuardModule, { useSGScreenShot } from 'react-native-screenguard';

function App() {
const { screenshotData, activationStatus } = useSGScreenShot();

React.useEffect(() => {
// ScreenGuard 초기화
ScreenGuardModule.initSettings({
getScreenshotPath: true,
});
}, []);

return (
<View>
<Text>활성화 여부: {activationStatus?.isActivated ? '예' : '아니요'}</Text>
{screenshotData && (
<Text>마지막 스크린샷: {screenshotData.name}</Text>
)}
</View>
);
}

콜백 리스너와 함께 사용하는 예제:

import React from 'react';
import { Alert } from 'react-native';
import ScreenGuardModule, { useSGScreenShot } from 'react-native-screenguard';

function App() {
const { screenshotData } = useSGScreenShot((event) => {
// 스크린샷이 찍힐 때마다 이 콜백이 실행됩니다.
Alert.alert('스크린샷 감지!', `파일: ${event.name}`);
});

// ... 나머지 컴포넌트 코드
}

참고 사항

  • 이 훅은 컴포넌트가 언마운트될 때 구독 해제(cleanup)를 자동으로 처리합니다.
  • 콜백 리스너는 initSettings()limitCaptureEvtCount 설정에 따라 트리거됩니다.
    • null, 0: 매번 트리거(제한 없음)
    • > 0: 처음 N개의 스크린샷에 대해서만 트리거
Android 제한 사항

Screenguard가 활성화된 동안에는 FLAG_SECURE가 표준 스크린샷 시도를 차단하기 때문에 스크린샷 이벤트를 수신하지 못할 수 있습니다. 하지만 서드파티 스크린샷 앱(XRecorder, Screen Recorder 등)의 이벤트는 수신할 수 있습니다.