Flutter应用克隆检测插件app_clone_checker的使用
Flutter应用克隆检测插件app_clone_checker的使用
app_clone_checker
是一个用于检测Flutter应用是否被克隆的新插件。它目前仅支持Android平台。
使用方法
首先,确保在项目的 pubspec.yaml
文件中添加依赖:
dependencies:
app_clone_checker: ^版本号
然后运行 flutter pub get
来安装依赖。
接下来,你可以通过以下方式调用插件来检测应用是否被克隆:
await AppCloneChecker.appOriginality("你的包名")
成功响应
如果应用未被克隆,插件将返回成功响应:
{
"result" : "Success",
"message" : "Valid App"
}
失败响应
如果应用被克隆或包名未传递,插件将返回失败响应:
{
"result" : "Failure",
"message" : "Cloned / In-Valid App" / "Application ID Not Passed"
}
完整示例代码
下面是一个完整的示例代码,展示了如何在Flutter应用中集成并使用 app_clone_checker
插件。
import 'dart:async';
import 'package:app_clone_checker/app_clone_checker.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = '未知';
dynamic _appOriginality = '未知';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
checkAppValid();
}
// 平台消息是异步的,所以我们初始化在一个异步方法中。
Future<void> initPlatformState() async {
String platformVersion;
// 平台消息可能会失败,所以我们使用一个try/catch PlatformException。
// 我们还处理消息可能返回null的情况。
try {
platformVersion = await AppCloneChecker.platformVersion ?? '未知平台版本';
} on PlatformException {
platformVersion = '获取平台版本失败。';
}
// 如果小部件从树中移除而异步平台消息还在飞行中,我们希望丢弃回复而不是调用
// setState来更新我们的不存在的外观。
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
// 平台消息是异步的,所以我们初始化在一个异步方法中。
Future<void> checkAppValid() async {
dynamic pluginResponse;
// 平台消息可能会失败,所以我们使用一个try/catch PlatformException。
// 我们还处理消息可能返回null的情况。
try {
pluginResponse = await AppCloneChecker.appOriginality(
"com.example.your_package_name", // 替换为你的包名
isWorkProfileAllowed: false);
var resultData = ResultData.fromJson(pluginResponse);
pluginResponse = resultData.message;
} on PlatformException {
pluginResponse = '获取结果失败。';
}
// 如果小部件从树中移除而异步平台消息还在飞行中,我们希望丢弃回复而不是调用
// setState来更新我们的不存在的外观。
if (!mounted) return;
setState(() {
_appOriginality = pluginResponse;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('应用克隆检测器'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('运行于: $_platformVersion\n'),
const SizedBox(height: 25,),
Center(child: Text('原版 / 克隆版 : $_appOriginality\n', textAlign: TextAlign.center,)),
],
),
),
);
}
}
// 定义ResultData类用于解析插件响应数据
class ResultData {
ResultData({
this.result,
this.message,
});
ResultData.fromJson(dynamic json) {
result = json['result'];
message = json['message'];
}
String? result;
String? message;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['result'] = result;
map['message'] = message;
return map;
}
}
更多关于Flutter应用克隆检测插件app_clone_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter应用克隆检测插件app_clone_checker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter应用中使用app_clone_checker
插件进行应用克隆检测的示例代码。这个插件可以帮助你检测应用是否被克隆或篡改。
首先,确保你已经在pubspec.yaml
文件中添加了app_clone_checker
依赖:
dependencies:
flutter:
sdk: flutter
app_clone_checker: ^latest_version # 替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用app_clone_checker
插件:
- 导入插件:
在你的Dart文件中(例如main.dart
),导入app_clone_checker
插件:
import 'package:app_clone_checker/app_clone_checker.dart';
- 初始化插件并检查克隆:
在应用的初始化部分(例如在MaterialApp
或CupertinoApp
的构建函数之前),调用插件的方法来检查应用是否被克隆。
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 检查应用克隆
AppCloneChecker.checkAppClone().then((result) {
if (result.isCloned) {
// 应用被克隆或篡改
print("应用被克隆或篡改: ${result.details}");
// 你可以在这里显示警告消息,退出应用,或者采取其他措施
} else {
// 应用未被克隆或篡改
print("应用未被克隆或篡改");
// 继续运行应用
runApp(MyApp());
}
}).catchError((error) {
// 处理错误
print("检查应用克隆时出错: $error");
// 仍然可以运行应用,但可能需要通知用户检查失败
runApp(MyApp());
});
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('应用克隆检测示例'),
),
body: Center(
child: Text('检查中...'),
),
),
);
}
}
在这个示例中,AppCloneChecker.checkAppClone()
方法会返回一个Future
,该Future
解析为一个包含克隆检测结果的AppCloneCheckResult
对象。你可以根据isCloned
属性来判断应用是否被克隆或篡改,并根据需要采取相应的措施。
请注意,app_clone_checker
插件的实现可能依赖于特定的平台特性(如Android的签名验证),因此在实际使用中,你可能需要根据你的具体需求和目标平台来调整代码。此外,由于插件的实现细节和API可能会随着版本的更新而变化,建议查阅插件的官方文档以获取最新的使用指南和API参考。