Flutter应用盗版检测插件is_pirated的使用

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

Flutter应用盗版检测插件is_pirated的使用

简介

is_pirated 是一个用于检测Flutter应用是否从未经授权的来源安装的插件。它可以在Android和iOS平台上工作,通过不同的API来判断应用的安装来源。

  • Android API 29及以下:使用 Context.getInstallerPackageName()
  • Android API 30及以上:使用 PackageManager.getInstallSourceInfo()
  • iOS:解析 Bundle.main.appStoreReceiptURL

安装

pubspec.yaml 文件中添加 is_pirated 依赖:

dependencies:
  is_pirated: ^<version>

使用示例

以下是一个完整的示例代码,展示了如何使用 is_pirated 插件来检测应用是否被盗版,并根据结果显示相应的提示信息。

import 'dart:async';

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

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  IsPirated isPirated;

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    try {
      // 获取盗版检测结果
      isPirated = await getIsPirated(
        debugOverride: false, // 是否在调试模式下禁用安装来源检查
        openStoreListing: false, // 是否在检测到盗版时打开应用商店页面
        appStoreId: '546532666', // iOS应用商店ID
        playStoreIdentifier: 'tikmoji.sethusenthil.com', // Android应用商店标识符
        closeApp: false, // 是否在检测到盗版时关闭应用
      );
    } on PlatformException {
      // 捕获平台异常
    }

    if (!mounted) return;

    setState(() {
      this.isPirated = isPirated;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Is Pirated 🏴‍☠️'),
        ),
        body: Center(
          child: Text(
            'This app is ${isPirated?.status == false ? "NOT " : ""}pirated',
            textAlign: TextAlign.center,
            style: TextStyle(
              fontWeight: FontWeight.bold,
              color: isPirated?.status == true ? Colors.red : Colors.green,
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中集成并使用is_pirated插件来进行盗版检测的示例代码。is_pirated插件通过检测应用的签名信息来帮助开发者判断应用是否被盗版。需要注意的是,盗版检测并非万无一失,但它可以作为一种额外的安全措施。

步骤 1: 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  is_pirated: ^latest_version  # 请替换为最新的版本号

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

步骤 2: 配置签名信息

在你的Android项目中,确保你已经配置好了应用的签名信息。这通常在android/app/build.gradle文件中设置。例如:

android {
    ...
    signingConfigs {
        release {
            keyAlias 'your-key-alias'
            keyPassword 'your-key-password'
            storeFile file('your-keystore-path.jks')
            storePassword 'your-store-password'
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

确保在发布应用时使用相同的签名配置。

步骤 3: 使用is_pirated插件

在你的Flutter代码中,你可以如下使用is_pirated插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Piracy Detection Demo'),
        ),
        body: Center(
          child: PiracyChecker(),
        ),
      ),
    );
  }
}

class PiracyChecker extends StatefulWidget {
  @override
  _PiracyCheckerState createState() => _PiracyCheckerState();
}

class _PiracyCheckerState extends State<PiracyChecker> {
  String piracyStatus = "Checking...";

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

  Future<void> _checkForPiracy() async {
    bool isPirated = await IsPirated.check();
    setState(() {
      piracyStatus = isPirated ? "App is pirated!" : "App is genuine.";
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text(piracyStatus, style: TextStyle(fontSize: 24));
  }
}

在这个示例中,PiracyChecker组件在初始化时会调用IsPirated.check()方法来检查应用是否被盗版。根据检查结果,它会更新显示的状态文本。

注意事项

  1. 签名一致性:确保在开发和发布应用时使用相同的签名证书,否则盗版检测可能无法正常工作。
  2. 安全性:盗版检测是一种额外的安全措施,但不能完全依赖它来防止盗版。结合其他安全策略(如代码混淆、动态API密钥等)使用效果更佳。
  3. 用户体验:在检测到盗版时,可以考虑友好地提示用户下载正版应用,而不是直接中断服务,以提升用户体验。

希望这个示例代码能帮助你在Flutter应用中集成盗版检测功能。

回到顶部