manage_iap_subscriptions
A focused Flutter plugin that opens App Store or Google Play subscription management on iOS and Android.
The caller explicitly chooses the store:
await showAppStoreSubscriptionManagement();
await showGooglePlaySubscriptionManagement();
It does not purchase, restore, query, validate, or synchronize subscriptions.
Platform behavior
| Requested store | iOS 15.0+ | Android API 24+ |
|---|---|---|
| App Store | Presents StoreKit's native management sheet. | Opens Apple's subscription management website. |
| Google Play | Opens the Google Play subscriptions website. | Opens the Play Store app, with a browser fallback. |
Other platforms and stores are not supported.
Development
The Flutter SDK version is pinned through .fvmrc. Install and use it with:
fvm install
fvm flutter pub get
fvm flutter test
Installation
Add the package to your pubspec.yaml:
dependencies:
manage_iap_subscriptions: ^0.2.0
Then run:
flutter pub get
Usage
import 'package:flutter/services.dart';
import 'package:manage_iap_subscriptions/manage_iap_subscriptions.dart';
Future<void> openSubscriptionManagement() async {
try {
await showAppStoreSubscriptionManagement();
// Or:
await showGooglePlaySubscriptionManagement();
} on PlatformException catch (error) {
// Show an error appropriate for your app.
print('Could not open subscription management: ${error.message}');
}
}
The future completing does not mean that the user changed or cancelled a subscription. The stores do not return that information through this API.
Store behavior
App Store
On iOS, the plugin calls AppStore.showManageSubscriptions(in:). StoreKit
determines whether the sheet displays production, sandbox, TestFlight, or local
StoreKit test data.
On Android, the plugin opens Apple's web-based subscription management:
https://account.apple.com/account/manage/section/subscriptions
The call can fail with:
window_scene_unavailableif there is no foregroundUIWindowScene.app_store_unavailableif the web interface cannot be opened.subscription_management_failedif StoreKit cannot present the sheet.
Google Play
On Android, the plugin opens the Play Store app and falls back to a browser when the app is unavailable. On iOS, it opens the same URL in the browser:
https://play.google.com/store/account/subscriptions
This shows the signed-in Play account's subscription center. The plugin deliberately does not accept a product ID and therefore does not deep-link to one specific subscription.
The call can fail with:
plugin_not_attachedif the plugin is not attached to a Flutter engine.google_play_unavailableif neither the Play Store app nor the website can be opened.subscription_management_failedfor another native launch error.
Scope
This package:
- Lets the caller choose App Store or Google Play explicitly.
- Uses native management where the requested store matches the device platform.
- Uses the store's web management on the other mobile platform.
- Contains no purchase, restore, receipt, entitlement, or backend logic.
- Does not provide confirmation dialogs or other application UI.
Publishing
After the first version has been published manually and GitHub automated publishing has been enabled in the package's pub.dev Admin tab, publishing a GitHub Release automatically publishes the corresponding package version.
The release tag and pubspec.yaml version must match:
pubspec.yaml: 0.2.0
GitHub tag: v0.2.0
Configure pub.dev automated publishing with:
Repository: dieringe/manage_iap_subscriptions
Tag pattern: v{{version}}
Draft releases do not publish the package. The workflow starts when the release is published.
License
MIT