vpn_permission 0.0.2 copy "vpn_permission: ^0.0.2" to clipboard
vpn_permission: ^0.0.2 copied to clipboard

A Flutter plugin for managing VPN permission on Android and iOS.

vpn_permission #

A Flutter plugin to manage VPN permissions on Android and iOS.

Android: Automatically requests VPN permission via VpnService.
iOS: Configures VPN profiles using NETunnelProviderManager.

Features #

  • Android: Auto-adds BIND_VPN_SERVICE permission (no setup required).
  • iOS: Triggers system dialogs for VPN configuration.
  • Simple API for permission checks/requests.

Installation #

Add to pubspec.yaml:

dependencies:
  vpn_permission: ^0.0.1

Setup #

Android #

Nothing needed! The plugin automatically adds:

<uses-permission android:name="android.permission.BIND_VPN_SERVICE" />

iOS #

1. Add Capabilities

  1. Open your project in Xcode.
  2. For your main app target:
    • Signing & Capabilities+App Groups (e.g., group.com.example.vpn)
    • +Network Extensions → Enable Packet Tunnel

2. Create VPN Extension

  1. FileNewTargetNetwork ExtensionPacket Tunnel Provider
  2. Name: VPNExtension
  3. Bundle ID: com.example.vpn.VPNExtension (match your app ID + .VPNExtension)

3. Configure Extension

Repeat for VPNExtension target:

  • Same App Group as main app
  • Network Extensions capability

Usage #

1. Import #

import 'package:vpn_permission/vpn_permission.dart';

2. Define Constants #

class AppConstants {
  static const String iOSPackageName = "com.example.vpn";
  static const String providerBundleIdentifier = "$iOSPackageName.VPNExtension";
  static const String groupIdentifier = "group.$iOSPackageName";
  static const String localizedDescription = "Free VPN - Fast & Secure";
}

3. Check/Request Permissions #

// Check permission
bool hasPermission = await VpnPermission.checkPermission();

// Request permission
if (!hasPermission) {
  bool granted = await VpnPermission.requestPermission(
    providerBundleIdentifier: AppConstants.providerBundleIdentifier,
    groupIdentifier: AppConstants.groupIdentifier,
    localizedDescription: AppConstants.localizedDescription,
  );
  print("Granted: $granted");
}

Contribution #

Issues/PRs welcome! Keep it simple.

1
likes
140
points
115
downloads

Publisher

verified publisherwisecodex.com

Weekly Downloads

A Flutter plugin for managing VPN permission on Android and iOS.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on vpn_permission