Flutter应用安全检测插件flutter_app_security_detected的使用

Flutter应用安全检测插件flutter_app_security_detected的使用

flutter_app_security_detected

Pub Package

高功能的Flutter应用安全检测插件。

禁用检测

Image

启用检测

Image

功能

  • 启用或禁用安全检测。
  • 更改对话框样式。

使用

请查看 示例代码

安装

pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_app_security_detected: ^1.0.0

基本设置

完整的示例代码可以在 这里 查看。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  FlutterAppSecurityDetectedConfig().setConfig(
    allowSecurityDetected: true,
    securityDetectedTitle: "安全检测",
    securityDetectedMessage:
        "此应用程序将在越狱设备或开发模式下无法运行。",
    securityDetectedTitleButton: "关闭",
    callback: (jailbroken, developerMode) {
      print(jailbroken);
      print(developerMode);
    },
    textTitleStyle: const TextStyle(
      color: Colors.red,
      fontSize: 30,
    ),
    textBodyStyle: TextStyle(
      fontSize: 20,
      color: Colors.red.withAlpha(100),
    ),
    textButtonStyle: const TextStyle(
      color: Colors.red,
      fontWeight: FontWeight.bold,
      fontSize: 20,
    ),
  );
  runApp(const MyApp());
}

继承我们的类

为了扩展你的Flutter状态fulWidget,继承以下类:

  • FlutterAppSecurityDetectedStatefulWidget
  • FlutterAppSecurityDetectedStatefulWidgetState
class FlutterAppSecurityDetectedExample
    extends FlutterAppSecurityDetectedStatefulWidget {
  [@override](/user/override)
  FlutterAppSecurityDetectedExampleState createState() => FlutterAppSecurityDetectedExampleState();
}

class FlutterAppSecurityDetectedExampleState
    extends FlutterAppSecurityDetectedStatefulWidgetState<FlutterAppSecurityDetectedExample> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("安全检测")),
      body: const Center(
        child: Text("示例安全检测"),
      ),
    );
  }
}

事件

使用 callback 返回设备检测的状态:

callback: (jailbroken, developerMode) {
  print(jailbroken);
  print(developerMode);
}

示例代码

示例文件: main.dart

import 'package:flutter/material.dart';
import 'package:flutter_app_security_detected/flutter_app_security_detected.dart';

import 'flutter_app_security_detected_example.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  FlutterAppSecurityDetectedConfig().setConfig(
    allowSecurityDetected: true,
    securityDetectedTitle: "安全检测",
    securityDetectedMessage:
        "此应用程序将在越狱设备或开发模式下无法运行。",
    securityDetectedTitleButton: "关闭",
    callback: (jailbroken, developerMode) {
      print(jailbroken);
      print(developerMode);
    },
    textTitleStyle: const TextStyle(
      color: Colors.red,
      fontSize: 30,
    ),
    textBodyStyle: TextStyle(
      fontSize: 20,
      color: Colors.red.withAlpha(100),
    ),
    textButtonStyle: const TextStyle(
      color: Colors.red,
      fontWeight: FontWeight.bold,
      fontSize: 20,
    ),
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: FlutterAppSecurityDetectedExample(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              '你已经按下了按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter应用安全检测插件flutter_app_security_detected的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用安全检测插件flutter_app_security_detected的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用flutter_app_security_detected插件的一个基本示例。这个插件通常用于检测一些常见的安全威胁,比如屏幕截图、调试模式等。

首先,确保你已经在pubspec.yaml文件中添加了flutter_app_security_detected依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_app_security_detected: ^最新版本号 # 请替换为实际最新版本号

然后运行flutter pub get来获取依赖。

接下来,在你的Flutter应用中,你可以按照以下步骤来使用这个插件:

  1. 导入插件

在你的Dart文件中导入插件:

import 'package:flutter_app_security_detected/flutter_app_security_detected.dart';
  1. 初始化插件

在你的应用的主文件中(通常是main.dart),初始化插件并设置监听器:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  FlutterAppSecurityDetected().initialize().then((_) {
    // 设置监听器
    FlutterAppSecurityDetected().addAppSecurityListener((event) {
      if (event is ScreenshotDetected) {
        // 检测到屏幕截图
        print("Screenshot detected!");
        // 可以在这里添加处理逻辑,比如显示警告或清除敏感信息
      } else if (event is DebuggingDetected) {
        // 检测到调试模式
        print("Debugging mode detected!");
        // 可以在这里添加处理逻辑,比如退出应用或显示警告
      } else if (event is OverlayWindowsDetected) {
        // 检测到其他覆盖窗口(比如悬浮窗)
        print("Overlay windows detected!");
        // 可以在这里添加处理逻辑
      }
      // 可以根据需要添加更多事件处理
    });
  });

  runApp(MyApp());
}
  1. 在你的应用中显示UI

这是一个简单的示例应用,它使用上述插件来检测安全威胁:

import 'package:flutter/material.dart';
import 'package:flutter_app_security_detected/flutter_app_security_detected.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  FlutterAppSecurityDetected().initialize().then((_) {
    FlutterAppSecurityDetected().addAppSecurityListener((event) {
      if (event is ScreenshotDetected) {
        print("Screenshot detected!");
      } else if (event is DebuggingDetected) {
        print("Debugging mode detected!");
      } else if (event is OverlayWindowsDetected) {
        print("Overlay windows detected!");
      }
    });
  });

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter App Security Demo'),
        ),
        body: Center(
          child: Text('Check the console for security detection events.'),
        ),
      ),
    );
  }
}

这个示例展示了如何初始化flutter_app_security_detected插件并设置监听器来检测屏幕截图、调试模式和覆盖窗口。当检测到这些事件时,它会在控制台中打印一条消息。你可以根据需要扩展这些事件处理逻辑,比如显示警告消息、清除敏感信息或退出应用。

请注意,这个插件的功能和API可能会随着版本的更新而变化,所以请参考最新的官方文档来获取最新的信息和最佳实践。

回到顶部