패키지, 저장소 및 앱 카테고리 검색

패키지 상세v0.2.0

disable_screenshots

스크린샷을 비활성화하는 세 가지 관련 기능을 제공합니다. 각각은 스크린샷 모니터링, 전역에 워터마크 추가, 스크린샷 비활성화(Android만 지원)입니다.

AndroidiOS
30일 다운로드
61
좋아요
33
Pub 점수
115

패키지 설치

flutter pub add disable_screenshots

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

disable_screenshots 패키지는 비승인 스크린샷을 방지하여 앱 보안을 강화하는 세 가지 기능을 제공합니다. 스크린샷이 촬영되었는지 감지하기 위한 스크린샷 모니터링을 활성화하고, 공유를 억제하기 위해 전역 워터마크를 추가할 수 있으며, 안드로이드 장치에서 스크린샷을 비활성화할 수 있습니다. iOS 지원은 명시되어 있지만, 실제로 스크린샷을 비활성화하는 기능은 안드로이드에만 제한됩니다. 이 패키지는 Flutter Pub를 통해 쉽게 통합되며, 민감한 콘텐츠를 다루는 앱에 유용합니다. 기능은 고보안 환경에서 사용자 개인정보 및 데이터 무결성을 보호하도록 설계되었습니다.

사용 사례

  • 민감한 앱 콘텐츠 보호
  • 금융 또는 헬스케어 애플리케이션 보안
  • 허가되지 않은 화면 공유 방지
  • 디지털 저작권 관리 향상
  • 스크린샷 시도 모니터링

주요 기능

  • 스크린샷 모니터링
  • 전역 워터마크 오버레이
  • 안드로이드 전용 스크린샷 비활성화
  • 간단한 Flutter 통합
  • 개인정보 보호 중심 디자인

적합한 대상

  • 기밀 데이터를 포함한 앱
  • 저작권이 있는 자료를 갖춘 교육 플랫폼
  • 안전한 뱅킹 또는 기업 앱
  • 디지털 미디어를 위한 콘텐츠 보호
  • 사용자 프라이버시를 우선시하는 개발 팀

고려 사항

  • iOS 스크린샷 비활성화 기능 없음
  • 워터마크는 UI 미적 요소에 영향을 줄 수 있습니다
  • Android 전용 권한이 필요합니다
  • 완전한 스크린샷 차단을 위해 안드로이드 전용
  • 과도하게 사용할 경우 사용자 경험에 영향을 미칠 수 있습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

disable_screenshots

在Flutter开发中,有时我们需要对App的内容进行管控,避免敏感信息暴露,所以开发了这个插件。此插件提供三个禁用截屏的相关功能,分别是:截屏监控行为、全局添加水印、禁用截屏(仅支持Android)。

Getting Started

Add dependency
dependencies:
  disable_screenshots: 0.0.1 #latest version
功能演示

demo_gif

使用样例
class RootApp extends StatefulWidget {
  @override
  _RootAppState createState() => _RootAppState();
}

class _RootAppState extends State<RootApp> {
  // 初始化插件
  DisableScreenshots _plugin = DisableScreenshots();
  // 监控截屏行为的stream
  StreamSubscription<void> _screenshotsSubscription;
  int _screenshotsCount = 0;
  bool _disableScreenshots = false;

  @override
  void initState() {
    super.initState();
    _screenshotsSubscription = _plugin.onScreenShots.listen((event) {
      // 监控到截屏行为会回调到这里
      setState(() {
        _screenshotsCount++;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('禁止截屏'),
      ),
      body: Column(
        children: <Widget>[
          Center(
            child: Text("监控到截屏次数:$_screenshotsCount"),
          ),
          Center(
            child: Text(_disableScreenshots ? "禁止截屏状态" : "允许截屏状态"),
          ),
          RaisedButton(
              onPressed: () {
                // 添加默认样式的水印
                _plugin.addWatermark(context, "默认水印",
                    rowCount: 4, columnCount: 8);
              },
              child: Text("添加默认水印")),
          RaisedButton(
              onPressed: () {
                // 添加自定义widget当做水印
                _plugin.addCustomWatermark(context,
                    Watarmark(rowCount: 3, columnCount: 10, text: "自定义水印"));
              },
              child: Text("添加自定义水印")),
          RaisedButton(
              onPressed: () {
                // 移除水印
                _plugin.removeWatermark();
              },
              child: Text("删除水印")),
          RaisedButton(
              onPressed: () async {
                bool flag = !_disableScreenshots;
                // 禁用或允许截屏(只支持iOS)
                await _plugin.disableScreenshots(flag);
                setState(() {
                  _disableScreenshots = flag;
                });
              },
              child: Text(_disableScreenshots ? "允许截屏(仅android适用)" : "禁用截屏(仅android适用)")),
          RaisedButton(
              onPressed: () {
                Navigator.of(context).push(MaterialPageRoute(
                    builder: (_) => Scaffold(
                          appBar: AppBar(
                            title: Text("我是新页面"),
                          ),
                          body: Center(child: Text("new page")),
                        )));
              },
              child: Text("进入新页面"))
        ],
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    //取消截屏监控可以调用cancel()方法
    if (_screenshotsSubscription != null) {
      _screenshotsSubscription.cancel();
    }
  }
}
已知问题
  1. 在老的flutter项目中,在iOS平台运行可能出现编译问题无法运行。这个是由于老的flutter项目里面没有使用到swift,所以没有briging文件,但是插件使用了swift,所以会编译失败,这种情况直接使用xcode在iOS项目中创建一个swift文件,会自动生成briding文件。
  2. 在某些安卓设备上(华为P30、Mi 10、三星Note10、OPPO reno3 Pro等),存在不能捕获截屏事件的问题,如果大家有解决方案,请提交pull request,谢谢!
其它

此Plugin的创建流程,可以参考博文如何创建一个Flutter Plugin

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.