diff --git a/permission_handler/README.md b/permission_handler/README.md
index 836bd1339..c08e2cc04 100644
--- a/permission_handler/README.md
+++ b/permission_handler/README.md
@@ -174,6 +174,51 @@ You must list the permission you want to use in your application:
+
+Swift Package Manager (SPM)
+
+> Requires Flutter 3.24.0 or higher and Xcode 15.0 or higher.
+
+With SPM, `Package.swift` automatically detects which permissions to enable by reading your app's `Info.plist`. A permission is compiled in when its corresponding usage description key is present:
+
+| Permission group | Info.plist key |
+|---|---|
+| `PermissionGroup.calendar` (< iOS 17) | `NSCalendarsUsageDescription` |
+| `PermissionGroup.calendarFullAccess` (iOS 17+) | `NSCalendarsFullAccessUsageDescription` |
+| `PermissionGroup.reminders` | `NSRemindersUsageDescription` |
+| `PermissionGroup.contacts` | `NSContactsUsageDescription` |
+| `PermissionGroup.camera` | `NSCameraUsageDescription` |
+| `PermissionGroup.microphone` | `NSMicrophoneUsageDescription` |
+| `PermissionGroup.speech` | `NSSpeechRecognitionUsageDescription` |
+| `PermissionGroup.photos` | `NSPhotoLibraryUsageDescription` |
+| `PermissionGroup.photosAddOnly` | `NSPhotoLibraryAddUsageDescription` |
+| `PermissionGroup.location` / `locationWhenInUse` | `NSLocationWhenInUseUsageDescription` |
+| `PermissionGroup.locationAlways` | `NSLocationAlwaysAndWhenInUseUsageDescription` |
+| `PermissionGroup.mediaLibrary` | `NSAppleMusicUsageDescription` |
+| `PermissionGroup.sensors` | `NSMotionUsageDescription` |
+| `PermissionGroup.bluetooth` | `NSBluetoothAlwaysUsageDescription` |
+| `PermissionGroup.appTrackingTransparency` | `NSUserTrackingUsageDescription` |
+| `PermissionGroup.assistant` | `NSSiriUsageDescription` |
+
+Because you must already add these keys to `Info.plist` for any permission to work, no additional configuration file is needed.
+
+**`PermissionGroup.notification` and `PermissionGroup.criticalAlerts`** have no required `Info.plist` key. Enable them via environment variable instead (set once per Mac session, before opening Xcode):
+
+```bash
+launchctl setenv PERMISSION_NOTIFICATIONS 1
+launchctl setenv PERMISSION_CRITICAL_ALERTS 1 # optional
+```
+
+**After adding or removing a key**, clear Xcode's package cache once so `Package.swift` is re-evaluated:
+
+```bash
+rm -rf ~/Library/Developer/Xcode/DerivedData
+```
+
+Then run `flutter build ios` or rebuild in Xcode as usual.
+
+
+
## How to use
There are a number of [`Permission`](https://pub.dev/documentation/permission_handler_platform_interface/latest/permission_handler_platform_interface/Permission-class.html#constants)s.
diff --git a/permission_handler/example/android/app/build.gradle b/permission_handler/example/android/app/build.gradle
index 537b42534..03e0b4a54 100644
--- a/permission_handler/example/android/app/build.gradle
+++ b/permission_handler/example/android/app/build.gradle
@@ -25,7 +25,7 @@ android {
if (project.android.hasProperty("namespace")) {
namespace 'com.baseflow.permissionhandlerexample'
}
- compileSdkVersion 35
+ compileSdkVersion 36
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
diff --git a/permission_handler/example/android/gradle/wrapper/gradle-wrapper.properties b/permission_handler/example/android/gradle/wrapper/gradle-wrapper.properties
index db18181ac..9162f1008 100644
--- a/permission_handler/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/permission_handler/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
diff --git a/permission_handler/example/android/settings.gradle b/permission_handler/example/android/settings.gradle
index 56eb85cb1..8cbe490f3 100644
--- a/permission_handler/example/android/settings.gradle
+++ b/permission_handler/example/android/settings.gradle
@@ -18,7 +18,7 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
- id "com.android.application" version "8.7.0" apply false
+ id "com.android.application" version "8.9.1" apply false
}
include ":app"
\ No newline at end of file
diff --git a/permission_handler_apple/CHANGELOG.md b/permission_handler_apple/CHANGELOG.md
index fbd51929f..05a0f3485 100644
--- a/permission_handler_apple/CHANGELOG.md
+++ b/permission_handler_apple/CHANGELOG.md
@@ -1,3 +1,13 @@
+## 9.4.8
+
+* Adds Swift Package Manager (SPM) support for Flutter 3.24+. Permissions are
+ enabled automatically based on usage description keys present in `Info.plist`
+ — no additional configuration required beyond clearing DerivedData once after
+ changes: `rm -rf ~/Library/Developer/Xcode/DerivedData`.
+* Moves ObjC sources to SPM-compatible layout (`Sources/permission_handler_apple/`).
+ CocoaPods continues to work unchanged.
+* Bumps minimum iOS deployment target to 12.0.
+
## 9.4.7
* Increases minimum supported Flutter version to 3.3.0, and removes code only
diff --git a/permission_handler_apple/example/ios/Flutter/AppFrameworkInfo.plist b/permission_handler_apple/example/ios/Flutter/AppFrameworkInfo.plist
index 7c5696400..391a902b2 100644
--- a/permission_handler_apple/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/permission_handler_apple/example/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
????
CFBundleVersion
1.0
- MinimumOSVersion
- 12.0
diff --git a/permission_handler_apple/example/ios/Podfile b/permission_handler_apple/example/ios/Podfile
index bdbed18e3..4bcee9ab6 100644
--- a/permission_handler_apple/example/ios/Podfile
+++ b/permission_handler_apple/example/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '12.0'
+platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/permission_handler_apple/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/permission_handler_apple/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index e67b2808a..16b76ec3c 100644
--- a/permission_handler_apple/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/permission_handler_apple/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -1,10 +1,28 @@
+ version = "1.7">
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
@@ -61,8 +80,6 @@
ReferencedContainer = "container:Runner.xcodeproj">
-
-
Bool {
- GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/permission_handler_apple/example/ios/Runner/Info.plist b/permission_handler_apple/example/ios/Runner/Info.plist
index e31eecab1..54235fcd3 100644
--- a/permission_handler_apple/example/ios/Runner/Info.plist
+++ b/permission_handler_apple/example/ios/Runner/Info.plist
@@ -2,6 +2,8 @@
+ CADisableMinimumFrameDurationOnPhone
+
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleExecutable
@@ -22,6 +24,65 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ NSAppleMusicUsageDescription
+ Music!
+ NSBluetoothAlwaysUsageDescription
+ bluetooth
+ NSBluetoothPeripheralUsageDescription
+ bluetooth
+ NSCalendarsFullAccessUsageDescription
+ Calendar full access
+ NSCalendarsUsageDescription
+ Calendars
+ NSContactsUsageDescription
+ contacts
+ NSLocationAlwaysAndWhenInUseUsageDescription
+ Always and when in use!
+ NSLocationAlwaysUsageDescription
+ Can I have location always?
+ NSLocationUsageDescription
+ Older devices need location.
+ NSLocationWhenInUseUsageDescription
+ Need location when in use
+ NSMicrophoneUsageDescription
+ microphone
+ NSMotionUsageDescription
+ motion
+ NSPhotoLibraryAddUsageDescription
+ photos add only
+ NSPhotoLibraryUsageDescription
+ photos
+ NSRemindersUsageDescription
+ reminders
+ NSSiriUsageDescription
+ The example app would like access to Siri Kit to demonstrate requesting authorization.
+ NSSpeechRecognitionUsageDescription
+ speech
+ NSUserTrackingUsageDescription
+ appTrackingTransparency
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
@@ -41,74 +102,7 @@
UIViewControllerBasedStatusBarAppearance
-
-
- NSLocationWhenInUseUsageDescription
- Need location when in use
- NSLocationAlwaysAndWhenInUseUsageDescription
- Always and when in use!
- NSLocationUsageDescription
- Older devices need location.
- NSLocationAlwaysUsageDescription
- Can I have location always?
-
-
- NSAppleMusicUsageDescription
- Music!
- kTCCServiceMediaLibrary
- media
-
-
- NSCalendarsUsageDescription
- Calendars
- NSCalendarsFullAccessUsageDescription
- Calendar full access
-
-
- NSCameraUsageDescription
- camera
-
-
- NSContactsUsageDescription
- contacts
-
-
- NSMicrophoneUsageDescription
- microphone
-
-
- NSSpeechRecognitionUsageDescription
- speech
-
-
- NSMotionUsageDescription
- motion
-
-
- NSPhotoLibraryUsageDescription
- photos
-
-
- NSRemindersUsageDescription
- reminders
-
-
- NSBluetoothAlwaysUsageDescription
- bluetooth
- NSBluetoothPeripheralUsageDescription
- bluetooth
-
-
- NSUserTrackingUsageDescription
- appTrackingTransparency
-
-
- NSSiriUsageDescription
- The example app would like access to Siri Kit to demonstrate requesting authorization.
-
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
+ kTCCServiceMediaLibrary
+ media
diff --git a/permission_handler_apple/example/ios/Runner/RunnerDebug.entitlements b/permission_handler_apple/example/ios/Runner/RunnerDebug.entitlements
index 21d95c45f..6503a8865 100644
--- a/permission_handler_apple/example/ios/Runner/RunnerDebug.entitlements
+++ b/permission_handler_apple/example/ios/Runner/RunnerDebug.entitlements
@@ -2,7 +2,10 @@
+
diff --git a/permission_handler_apple/ios/.gitignore b/permission_handler_apple/ios/.gitignore
index 710ec6cf1..3ed647344 100644
--- a/permission_handler_apple/ios/.gitignore
+++ b/permission_handler_apple/ios/.gitignore
@@ -34,3 +34,7 @@ Icon?
.tags*
/Flutter/Generated.xcconfig
+
+# Swift Package Manager
+.build/
+*.resolved
diff --git a/permission_handler_apple/ios/permission_handler_apple.podspec b/permission_handler_apple/ios/permission_handler_apple.podspec
index 81210cb8a..e90ae9709 100644
--- a/permission_handler_apple/ios/permission_handler_apple.podspec
+++ b/permission_handler_apple/ios/permission_handler_apple.podspec
@@ -12,12 +12,12 @@ Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Andro
s.license = { :file => '../LICENSE' }
s.author = { 'Baseflow' => 'hello@baseflow.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
- s.public_header_files = 'Classes/**/*.h'
+ s.source_files = 'permission_handler_apple/Sources/permission_handler_apple/**/*.{h,m}'
+ s.public_header_files = 'permission_handler_apple/Sources/permission_handler_apple/include/**/*.h'
s.dependency 'Flutter'
- s.ios.deployment_target = '8.0'
+ s.ios.deployment_target = '12.0'
s.static_framework = true
- s.resource_bundles = {'permission_handler_apple_privacy' => ['Resources/PrivacyInfo.xcprivacy']}
+ s.resource_bundles = {'permission_handler_apple_privacy' => ['permission_handler_apple/Sources/permission_handler_apple/PrivacyInfo.xcprivacy']}
end
diff --git a/permission_handler_apple/ios/permission_handler_apple/Package.swift b/permission_handler_apple/ios/permission_handler_apple/Package.swift
new file mode 100644
index 000000000..72564d104
--- /dev/null
+++ b/permission_handler_apple/ios/permission_handler_apple/Package.swift
@@ -0,0 +1,148 @@
+// swift-tools-version: 5.9
+
+import PackageDescription
+import Foundation
+
+// ---------------------------------------------------------------------------
+// Permission configuration
+//
+// Permissions are resolved in priority order:
+// 1. Environment variable (e.g. `launchctl setenv PERMISSION_CAMERA 1`)
+// 2. Matching key present in the app's Info.plist
+// 3. Default: disabled (0)
+//
+// After changing Info.plist or env vars, clear DerivedData once so Xcode
+// re-evaluates this manifest:
+// rm -rf ~/Library/Developer/Xcode/DerivedData
+// ---------------------------------------------------------------------------
+
+let env = ProcessInfo.processInfo.environment
+
+/// Walk up from Package.swift looking for Runner/Info.plist.
+/// Works when the package is resolved via Flutter's .symlinks/ directory.
+func findInfoPlist() -> [String: Any] {
+ var dir = URL(fileURLWithPath: #file).deletingLastPathComponent()
+ for _ in 0..<8 {
+ let candidate = dir.appendingPathComponent("Runner/Info.plist")
+ if let plist = NSDictionary(contentsOf: candidate) as? [String: Any] {
+ return plist
+ }
+ dir = dir.deletingLastPathComponent()
+ }
+ return [:]
+}
+
+let infoPlist = findInfoPlist()
+
+/// Return "1" if the env var is set, else if any of the Info.plist keys are
+/// present, else "0".
+func enabled(_ envKey: String, plistKeys: String...) -> String {
+ if let val = env[envKey], val != "0" { return "1" }
+ for key in plistKeys where infoPlist[key] != nil { return "1" }
+ return "0"
+}
+
+let permissionDefines: [CSetting] = [
+ // dart: PermissionGroup.calendar (< iOS 17)
+ .define("PERMISSION_EVENTS",
+ to: enabled("PERMISSION_EVENTS",
+ plistKeys: "NSCalendarsUsageDescription")),
+ // dart: PermissionGroup.calendarFullAccess (iOS 17+)
+ .define("PERMISSION_EVENTS_FULL_ACCESS",
+ to: enabled("PERMISSION_EVENTS_FULL_ACCESS",
+ plistKeys: "NSCalendarsFullAccessUsageDescription")),
+ // dart: PermissionGroup.reminders
+ .define("PERMISSION_REMINDERS",
+ to: enabled("PERMISSION_REMINDERS",
+ plistKeys: "NSRemindersUsageDescription")),
+ // dart: PermissionGroup.contacts
+ .define("PERMISSION_CONTACTS",
+ to: enabled("PERMISSION_CONTACTS",
+ plistKeys: "NSContactsUsageDescription")),
+ // dart: PermissionGroup.camera
+ .define("PERMISSION_CAMERA",
+ to: enabled("PERMISSION_CAMERA",
+ plistKeys: "NSCameraUsageDescription")),
+ // dart: PermissionGroup.microphone
+ .define("PERMISSION_MICROPHONE",
+ to: enabled("PERMISSION_MICROPHONE",
+ plistKeys: "NSMicrophoneUsageDescription")),
+ // dart: PermissionGroup.speech
+ .define("PERMISSION_SPEECH_RECOGNIZER",
+ to: enabled("PERMISSION_SPEECH_RECOGNIZER",
+ plistKeys: "NSSpeechRecognitionUsageDescription")),
+ // dart: PermissionGroup.photos
+ .define("PERMISSION_PHOTOS",
+ to: enabled("PERMISSION_PHOTOS",
+ plistKeys: "NSPhotoLibraryUsageDescription")),
+ // dart: PermissionGroup.photosAddOnly
+ .define("PERMISSION_PHOTOS_ADD_ONLY",
+ to: enabled("PERMISSION_PHOTOS_ADD_ONLY",
+ plistKeys: "NSPhotoLibraryAddUsageDescription")),
+ // dart: PermissionGroup.location / locationAlways / locationWhenInUse
+ .define("PERMISSION_LOCATION",
+ to: enabled("PERMISSION_LOCATION",
+ plistKeys: "NSLocationWhenInUseUsageDescription",
+ "NSLocationAlwaysAndWhenInUseUsageDescription")),
+ // dart: PermissionGroup.locationWhenInUse (only when locationAlways is NOT needed)
+ .define("PERMISSION_LOCATION_WHENINUSE",
+ to: enabled("PERMISSION_LOCATION_WHENINUSE",
+ plistKeys: "NSLocationWhenInUseUsageDescription")),
+ // dart: PermissionGroup.locationAlways
+ .define("PERMISSION_LOCATION_ALWAYS",
+ to: enabled("PERMISSION_LOCATION_ALWAYS",
+ plistKeys: "NSLocationAlwaysAndWhenInUseUsageDescription")),
+ // dart: PermissionGroup.notification (no required Info.plist key)
+ .define("PERMISSION_NOTIFICATIONS",
+ to: enabled("PERMISSION_NOTIFICATIONS")),
+ // dart: PermissionGroup.mediaLibrary
+ .define("PERMISSION_MEDIA_LIBRARY",
+ to: enabled("PERMISSION_MEDIA_LIBRARY",
+ plistKeys: "NSAppleMusicUsageDescription")),
+ // dart: PermissionGroup.sensors
+ .define("PERMISSION_SENSORS",
+ to: enabled("PERMISSION_SENSORS",
+ plistKeys: "NSMotionUsageDescription")),
+ // dart: PermissionGroup.bluetooth
+ .define("PERMISSION_BLUETOOTH",
+ to: enabled("PERMISSION_BLUETOOTH",
+ plistKeys: "NSBluetoothAlwaysUsageDescription",
+ "NSBluetoothPeripheralUsageDescription")),
+ // dart: PermissionGroup.appTrackingTransparency
+ .define("PERMISSION_APP_TRACKING_TRANSPARENCY",
+ to: enabled("PERMISSION_APP_TRACKING_TRANSPARENCY",
+ plistKeys: "NSUserTrackingUsageDescription")),
+ // dart: PermissionGroup.criticalAlerts (no required Info.plist key)
+ .define("PERMISSION_CRITICAL_ALERTS",
+ to: enabled("PERMISSION_CRITICAL_ALERTS")),
+ // dart: PermissionGroup.assistant
+ .define("PERMISSION_ASSISTANT",
+ to: enabled("PERMISSION_ASSISTANT",
+ plistKeys: "NSSiriUsageDescription")),
+]
+
+let package = Package(
+ name: "permission_handler_apple",
+ platforms: [
+ .iOS("12.0"),
+ ],
+ products: [
+ .library(name: "permission-handler-apple", targets: ["permission_handler_apple"]),
+ ],
+ targets: [
+ .target(
+ name: "permission_handler_apple",
+ path: "Sources/permission_handler_apple",
+ resources: [
+ .process("PrivacyInfo.xcprivacy"),
+ ],
+ publicHeadersPath: "include",
+ cSettings: [
+ .headerSearchPath("."),
+ .headerSearchPath("strategies"),
+ .headerSearchPath("util"),
+ .headerSearchPath("include/permission_handler_apple"),
+ ] + permissionDefines
+ ),
+ ]
+)
diff --git a/permission_handler_apple/ios/Classes/PermissionHandlerEnums.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerEnums.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/PermissionHandlerEnums.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerEnums.h
diff --git a/permission_handler_apple/ios/Classes/PermissionHandlerPlugin.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerPlugin.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/PermissionHandlerPlugin.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerPlugin.h
diff --git a/permission_handler_apple/ios/Classes/PermissionHandlerPlugin.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerPlugin.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/PermissionHandlerPlugin.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionHandlerPlugin.m
diff --git a/permission_handler_apple/ios/Classes/PermissionManager.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionManager.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/PermissionManager.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionManager.h
diff --git a/permission_handler_apple/ios/Classes/PermissionManager.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionManager.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/PermissionManager.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PermissionManager.m
diff --git a/permission_handler_apple/ios/Resources/PrivacyInfo.xcprivacy b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PrivacyInfo.xcprivacy
similarity index 100%
rename from permission_handler_apple/ios/Resources/PrivacyInfo.xcprivacy
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/PrivacyInfo.xcprivacy
diff --git a/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/include/permission_handler_apple/PermissionHandlerPlugin.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/include/permission_handler_apple/PermissionHandlerPlugin.h
new file mode 100644
index 000000000..2d3a848d8
--- /dev/null
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/include/permission_handler_apple/PermissionHandlerPlugin.h
@@ -0,0 +1,7 @@
+#import
+
+@class PermissionManager;
+
+@interface PermissionHandlerPlugin : NSObject
+- (instancetype)initWithPermissionManager:(PermissionManager *)permissionManager;
+@end
diff --git a/permission_handler_apple/ios/Classes/strategies/AppTrackingTransparencyPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AppTrackingTransparencyPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AppTrackingTransparencyPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AppTrackingTransparencyPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/AppTrackingTransparencyPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AppTrackingTransparencyPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AppTrackingTransparencyPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AppTrackingTransparencyPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/AssistantPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AssistantPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AssistantPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AssistantPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/AssistantPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AssistantPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AssistantPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AssistantPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/AudioVideoPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AudioVideoPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AudioVideoPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AudioVideoPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/AudioVideoPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AudioVideoPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/AudioVideoPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/AudioVideoPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/BackgroundRefreshStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BackgroundRefreshStrategy.h
similarity index 92%
rename from permission_handler_apple/ios/Classes/strategies/BackgroundRefreshStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BackgroundRefreshStrategy.h
index 2dfe0032c..2f6797453 100644
--- a/permission_handler_apple/ios/Classes/strategies/BackgroundRefreshStrategy.h
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BackgroundRefreshStrategy.h
@@ -6,6 +6,7 @@
//
#import
+#import
#import "PermissionStrategy.h"
NS_ASSUME_NONNULL_BEGIN
diff --git a/permission_handler_apple/ios/Classes/strategies/BackgroundRefreshStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BackgroundRefreshStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/BackgroundRefreshStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BackgroundRefreshStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/BluetoothPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BluetoothPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/BluetoothPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BluetoothPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/BluetoothPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BluetoothPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/BluetoothPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/BluetoothPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/ContactPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/ContactPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/ContactPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/ContactPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/ContactPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/ContactPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/ContactPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/ContactPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/CriticalAlertsPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/CriticalAlertsPermissionStrategy.h
similarity index 95%
rename from permission_handler_apple/ios/Classes/strategies/CriticalAlertsPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/CriticalAlertsPermissionStrategy.h
index 44b857f48..fbc332ccd 100644
--- a/permission_handler_apple/ios/Classes/strategies/CriticalAlertsPermissionStrategy.h
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/CriticalAlertsPermissionStrategy.h
@@ -10,6 +10,7 @@
#if PERMISSION_CRITICAL_ALERTS
+#import
#import
@interface CriticalAlertsPermissionStrategy : NSObject
diff --git a/permission_handler_apple/ios/Classes/strategies/CriticalAlertsPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/CriticalAlertsPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/CriticalAlertsPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/CriticalAlertsPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/EventPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/EventPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/EventPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/EventPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/EventPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/EventPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/EventPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/EventPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/LocationPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/LocationPermissionStrategy.h
similarity index 96%
rename from permission_handler_apple/ios/Classes/strategies/LocationPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/LocationPermissionStrategy.h
index 52bcc89dc..082e9d5b4 100644
--- a/permission_handler_apple/ios/Classes/strategies/LocationPermissionStrategy.h
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/LocationPermissionStrategy.h
@@ -8,6 +8,7 @@
#if PERMISSION_LOCATION || PERMISSION_LOCATION_WHENINUSE || PERMISSION_LOCATION_ALWAYS
+#import
#import
@interface LocationPermissionStrategy : NSObject
diff --git a/permission_handler_apple/ios/Classes/strategies/LocationPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/LocationPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/LocationPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/LocationPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/MediaLibraryPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/MediaLibraryPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/MediaLibraryPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/MediaLibraryPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/MediaLibraryPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/MediaLibraryPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/MediaLibraryPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/MediaLibraryPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/NotificationPermissionStrategy.h
similarity index 95%
rename from permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/NotificationPermissionStrategy.h
index df5a795d6..73059a4b5 100644
--- a/permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.h
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/NotificationPermissionStrategy.h
@@ -10,6 +10,7 @@
#if PERMISSION_NOTIFICATIONS
+#import
#import
@interface NotificationPermissionStrategy : NSObject
diff --git a/permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/NotificationPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/NotificationPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/PermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/PermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/PhonePermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhonePermissionStrategy.h
similarity index 92%
rename from permission_handler_apple/ios/Classes/strategies/PhonePermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhonePermissionStrategy.h
index a90cfc81f..c36d999b1 100644
--- a/permission_handler_apple/ios/Classes/strategies/PhonePermissionStrategy.h
+++ b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhonePermissionStrategy.h
@@ -6,6 +6,7 @@
//
#import
+#import
#import "PermissionStrategy.h"
NS_ASSUME_NONNULL_BEGIN
diff --git a/permission_handler_apple/ios/Classes/strategies/PhonePermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhonePermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/PhonePermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhonePermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/PhotoPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhotoPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/PhotoPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhotoPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/PhotoPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhotoPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/PhotoPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/PhotoPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/SensorPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SensorPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/SensorPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SensorPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/SensorPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SensorPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/SensorPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SensorPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/SpeechPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SpeechPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/SpeechPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SpeechPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/SpeechPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SpeechPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/SpeechPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/SpeechPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/StoragePermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/StoragePermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/StoragePermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/StoragePermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/StoragePermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/StoragePermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/StoragePermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/StoragePermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/strategies/UnknownPermissionStrategy.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/UnknownPermissionStrategy.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/UnknownPermissionStrategy.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/UnknownPermissionStrategy.h
diff --git a/permission_handler_apple/ios/Classes/strategies/UnknownPermissionStrategy.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/UnknownPermissionStrategy.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/strategies/UnknownPermissionStrategy.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/strategies/UnknownPermissionStrategy.m
diff --git a/permission_handler_apple/ios/Classes/util/Codec.h b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/util/Codec.h
similarity index 100%
rename from permission_handler_apple/ios/Classes/util/Codec.h
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/util/Codec.h
diff --git a/permission_handler_apple/ios/Classes/util/Codec.m b/permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/util/Codec.m
similarity index 100%
rename from permission_handler_apple/ios/Classes/util/Codec.m
rename to permission_handler_apple/ios/permission_handler_apple/Sources/permission_handler_apple/util/Codec.m
diff --git a/permission_handler_apple/pubspec.yaml b/permission_handler_apple/pubspec.yaml
index 4abd13fb3..496e1aca6 100644
--- a/permission_handler_apple/pubspec.yaml
+++ b/permission_handler_apple/pubspec.yaml
@@ -2,7 +2,7 @@ name: permission_handler_apple
description: Permission plugin for Flutter. This plugin provides the iOS API to request and check permissions.
repository: https://github.com/baseflow/flutter-permission-handler
issue_tracker: https://github.com/Baseflow/flutter-permission-handler/issues
-version: 9.4.7
+version: 9.4.8
environment:
sdk: ">=2.18.0 <4.0.0"