Flutter越狱检测插件flutter_jailbreak_detection的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter越狱检测插件flutter_jailbreak_detection的使用

Flutter jailbreak and root detection plugin. 它在Android上使用RootBeer,在iOS上使用IOSSecuritySuite

开始使用

首先,你需要在pubspec.yaml文件中添加依赖:

dependencies:
  flutter_jailbreak_detection: ^最新版本号

然后运行flutter pub get来安装这个包。

接下来是简单的代码示例,用于检测设备是否越狱或开启开发者模式(仅限安卓):

import 'package:flutter_jailbreak_detection/flutter_jailbreak_detection.dart';

bool jailbroken = await FlutterJailbreakDetection.jailbroken;
bool developerMode = await FlutterJailbreakDetection.developerMode; // android only.

示例Demo

下面是一个完整的示例应用,它会尝试获取设备的越狱状态和开发者模式状态(仅限安卓),并在界面上显示这些信息。

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_jailbreak_detection/flutter_jailbreak_detection.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool? _jailbroken;
  bool? _developerMode;

  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    bool jailbroken;
    bool developerMode;
    try {
      jailbroken = await FlutterJailbreakDetection.jailbroken;
      developerMode = await FlutterJailbreakDetection.developerMode;
    } on PlatformException {
      jailbroken = true;
      developerMode = true;
    }

    if (!mounted) return;

    setState(() {
      _jailbroken = jailbroken;
      _developerMode = developerMode;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Jailbroken plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('Jailbroken: ${_jailbroken == null ? "Unknown" : _jailbroken! ? "YES" : "NO"}'),
              Text('Developer mode: ${_developerMode == null ? "Unknown" : _developerMode! ? "YES" : "NO"}')
            ],
          ),
        ),
      ),
    );
  }
}

在这个例子中,我们创建了一个Flutter应用程序,它会在启动时检查设备是否被越狱以及(对于Android设备)是否启用了开发者模式。然后,它会将这些信息显示在屏幕上。这可以帮助你理解如何在实际项目中使用flutter_jailbreak_detection插件。


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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_jailbreak_detection插件的一个简单示例。这个插件可以帮助你检测iOS设备是否已被越狱,以及Android设备是否已被root。

第一步:添加依赖

首先,你需要在你的pubspec.yaml文件中添加flutter_jailbreak_detection的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_jailbreak_detection: ^x.y.z  # 请将x.y.z替换为最新版本号

然后运行flutter pub get来安装依赖。

第二步:导入插件

在你的Flutter项目中的Dart文件(例如main.dart)中导入插件:

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

第三步:使用插件

你可以在应用的初始化阶段或者任何你需要的地方调用插件的方法来检测设备状态。以下是一个完整的示例,展示了如何在应用启动时检测设备是否被越狱或root:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Jailbreak Detection Example'),
        ),
        body: Center(
          child: FutureBuilder<bool>(
            future: checkDeviceSecurity(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                return Text(
                  'Device is ${snapshot.data ? "secure" : "not secure"}',
                  style: TextStyle(fontSize: 24),
                );
              }
            },
          ),
        ),
      ),
    );
  }

  Future<bool> checkDeviceSecurity() async {
    try {
      bool isJailbroken = await FlutterJailbreakDetection.isJailbroken;
      bool isRooted = await FlutterJailbreakDetection.isRooted;
      // 在实际应用中,你可能需要更复杂的逻辑来处理不同的设备和平台
      // 这里为了简单起见,我们假设只要设备被越狱或root,就不安全
      return !(isJailbroken || isRooted);
    } catch (e) {
      print('Error checking device security: $e');
      return false;  // 如果有错误,默认认为设备不安全
    }
  }
}

解释

  1. FutureBuilder: 用于处理异步操作,显示加载指示器直到设备安全状态检查完成。
  2. checkDeviceSecurity: 一个异步函数,它调用FlutterJailbreakDetection.isJailbrokenFlutterJailbreakDetection.isRooted来获取设备是否被越狱或root的状态。
  3. Text Widget: 根据检查结果显示设备是否安全。

注意事项

  • 请确保插件的版本与你的Flutter环境兼容。
  • 插件的检测结果并不是100%准确,特别是在某些复杂的越狱或root情况下。
  • 在生产环境中,你可能需要结合其他安全措施来提高应用的安全性。

希望这个示例能帮助你理解如何在Flutter项目中使用flutter_jailbreak_detection插件!

回到顶部