Web Analytics
Nhảy tới nội dung

useSGScreenShot MỚI ✨

Phiên bản

Khả dụng từ v2.0.0+

Một React hook để phát hiện các sự kiện chụp màn hình. Thay thế cho registerScreenshotEventListener từ phiên bản v1.x.

Core Function

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

Tham số

TênBắt buộcKiểuMô tả
listenerKhôngfunctionMột hàm callback tùy chọn được kích hoạt mỗi khi có sự kiện chụp màn hình

Giá trị trả về

TênKiểuMô tả
screenshotDatađối tượng | nullDữ liệu về ảnh chụp màn hình gần nhất
activationStatusđối tượng | nullTrạng thái kích hoạt hiện tại của ScreenGuard

Đối tượng screenshotData

interface ScreenGuardScreenShotPathDataObject {
path?: string;
name?: string;
type?: string;
}
TrườngKiểuMô tả
pathstring | undefinedĐường dẫn tệp đầy đủ của ảnh màn hình đã chụp (ví dụ: /var/mobile/.../screenshot.png). Chỉ khả dụng nếu getScreenshotPath: true trong initSettings()
namestring | undefinedTên tệp của ảnh chụp màn hình (ví dụ: screenshot_2024.png)
typestring | undefinedPhần mở rộng/kiểu tệp (ví dụ: 'png', 'jpg')

Đối tượng activationStatus

interface ScreenGuardHookData {
method: string;
isActivated: boolean;
}
TrườngKiểuMô tả
methodstringPhương thức kích hoạt hiện đang hoạt động. Các giá trị có thể có: 'blur', 'image', 'color', '' (trống khi không được kích hoạt)
isActivatedbooleantrue nếu screenguard hiện đang được kích hoạt, false nếu ngược lại

Code mẫu

Cách sử dụng cơ bản với 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(() => {
// Khởi tạo ScreenGuard
ScreenGuardModule.initSettings({
getScreenshotPath: true,
});
}, []);

return (
<View>
<Text>Đã kích hoạt: {activationStatus?.isActivated ? 'Có' : 'Không'}</Text>
{screenshotData && (
<Text>Ảnh chụp gần nhất: {screenshotData.name}</Text>
)}
</View>
);
}

Với trình lắng nghe callback:

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

function App() {
const { screenshotData } = useSGScreenShot((event) => {
// Callback này kích hoạt mỗi khi có ảnh chụp màn hình
Alert.alert('Phát hiện chụp màn hình!', `Tệp: ${event.name}`);
});

// ... phần còn lại của component
}

Lưu ý

  • Hook này tự động xử lý việc hủy đăng ký (cleanup) khi component bị unmount.
  • Trình lắng nghe callback sẽ được kích hoạt dựa trên limitCaptureEvtCount trong initSettings().
    • null, 0: Kích hoạt mọi lúc (không giới hạn)
    • > 0: Chỉ kích hoạt cho N lần chụp màn hình đầu tiên.
Hạn chế trên Android

Sự kiện chụp màn hình có thể không nhận được khi screenguard đang hoạt động do FLAG_SECURE chặn các nỗ lực chụp màn hình tiêu chuẩn. Tuy nhiên, các sự kiện vẫn có thể nhận được từ các ứng dụng chụp màn hình của bên thứ ba (như XRecorder, Screen Recorder, v.v.)