Flutter eSIM Plugin

pub package GitHub stars GitHub forks GitHub issues GitHub license

A Flutter plugin for checking eSIM support and installing eSIM profiles directly within your app.

Table of Contents

Getting Started

To use this plugin, add flutter_esim as a dependency in your pubspec.yaml file.

dependencies:
  flutter_esim: ^latest_version

Then, run the command:

flutter pub get

Installation

Make sure to follow the platform-specific setup for your project:

Android: No additional setup required.
iOS: No additional setup required.

Usage

Import the library in your Dart file:

import 'package:flutter_esim/flutter_esim.dart';

Now you can use the FlutterEsim class to check eSIM support and install eSIM profiles.

// Check if the device supports eSIM
// Does not require requesting entitlement approval from Apple (Manual checking)
bool isEsimSupported = await FlutterEsim.isEsimSupported();

// Check if the device supports eSIM
// Does not require requesting entitlement approval from Apple (Manual checking)
// You can add some devices that are not yet on the market that you want to check
List<String> newer = ['iPhone18,4', 'iPhone19,4']
bool isEsimSupported = await FlutterEsim.isEsimSupported(newer);

// Install an eSIM profile
// Require requesting entitlement approval from Apple
bool installedSuccessfully = await FlutterEsim.installEsimProfile(profileData);

// A piece of text containing simple steps for setting up eSIM.
bool textInstructions = await FlutterEsim.instructions();

eSIM Integration Guidelines for iOS

Compatibility Check:

You can integrate eSIM functionality into your iOS app by following the steps below. Please note that the process involves requesting entitlement approval from Apple. https://developer.apple.com//contact/request/esim-access-entitlement

Steps:

Step 1: Request eSIM Entitlement

Using your developer account, submit a request for the eSIM entitlement through the Apple Developer portal.

Step 2: Approval Process

Apple will review and approve the entitlement request. You can check the status of the approval in your app's profile settings.

Step 3: Download Profiles

Download the App Development and Distribution profiles. Ensure that the eSIM entitlement is selected as part of Step #2 in the profile settings.

Step 4: Update Info.plist

Update your Info.plist file with the following keys and values:

<key>CarrierDescriptors</key>
<array>
  <dict>
    <key>GID1</key>
    <string>***</string>
    <key>GID2</key>
    <string>***</string>
    <key>MCC</key> <!-- Country Code -->
    <string>***</string>
    <key>MNC</key> <!-- Network Code -->
    <string>***</string>
  </dict>
</array>

Note: You can obtain GID1, GID2, MCC, and MNC information for eSIM compatibility from various sources:

  • Mobile Network Operators: Contact your mobile network operator for specific eSIM card details.
  • Online eSIM Providers: Many providers such as Truphone, Twilio, and Unlocator publish this information on their websites.
  • Device Manufacturers: Some manufacturers like Apple and Samsung provide details on their websites or in user manuals.
  • eSIM Databases: Websites like esimdb.com offer information on eSIM cards and associated codes. It's crucial to acknowledge that eSIM compatibility may vary based on the mobile network operator and device. Therefore, always refer to the specific provider or manufacturer for accurate and up-to-date information.

For more details, refer to the API Reference section.

Example

Check out the example directory for a simple Flutter app demonstrating the usage of this plugin.

Contributing

Feel free to contribute to this project!

License

This project is licensed under the MIT License.