diff --git a/packages/local_auth/local_auth/CHANGELOG.md b/packages/local_auth/local_auth/CHANGELOG.md
index ed16c45106b4..9a243e831048 100644
--- a/packages/local_auth/local_auth/CHANGELOG.md
+++ b/packages/local_auth/local_auth/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.6
+
+* Updates iOS minimum version in README.
+
## 2.1.5
* Updates links for the merge of flutter/plugins into flutter/packages.
diff --git a/packages/local_auth/local_auth/README.md b/packages/local_auth/local_auth/README.md
index 8abf583b9dd4..1fc9ce3f4f00 100644
--- a/packages/local_auth/local_auth/README.md
+++ b/packages/local_auth/local_auth/README.md
@@ -8,9 +8,9 @@ the user.
On supported devices, this includes authentication with biometrics such as
fingerprint or facial recognition.
-| | Android | iOS | Windows |
-|-------------|-----------|------|-------------|
-| **Support** | SDK 16+\* | 9.0+ | Windows 10+ |
+| | Android | iOS | Windows |
+|-------------|-----------|-------|-------------|
+| **Support** | SDK 16+\* | 11.0+ | Windows 10+ |
## Usage
diff --git a/packages/local_auth/local_auth/example/ios/Flutter/AppFrameworkInfo.plist b/packages/local_auth/local_auth/example/ios/Flutter/AppFrameworkInfo.plist
index 3a9c234f96d4..9b41e7d87980 100644
--- a/packages/local_auth/local_auth/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/packages/local_auth/local_auth/example/ios/Flutter/AppFrameworkInfo.plist
@@ -25,6 +25,6 @@
arm64
MinimumOSVersion
- 9.0
+ 11.0
diff --git a/packages/local_auth/local_auth/example/ios/Podfile b/packages/local_auth/local_auth/example/ios/Podfile
index f7d6a5e68c3a..d207307f86d7 100644
--- a/packages/local_auth/local_auth/example/ios/Podfile
+++ b/packages/local_auth/local_auth/example/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '9.0'
+# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/packages/local_auth/local_auth/example/ios/Runner.xcodeproj/project.pbxproj b/packages/local_auth/local_auth/example/ios/Runner.xcodeproj/project.pbxproj
index b40fbca4cf66..c10bc025773b 100644
--- a/packages/local_auth/local_auth/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/local_auth/local_auth/example/ios/Runner.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -217,10 +217,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -231,6 +233,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -344,7 +347,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -394,7 +397,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
diff --git a/packages/local_auth/local_auth/example/ios/Runner/Info.plist b/packages/local_auth/local_auth/example/ios/Runner/Info.plist
index f8e0356d0a68..1af663b3f83c 100644
--- a/packages/local_auth/local_auth/example/ios/Runner/Info.plist
+++ b/packages/local_auth/local_auth/example/ios/Runner/Info.plist
@@ -47,5 +47,9 @@
NSFaceIDUsageDescription
App needs to authenticate using faces.
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/packages/local_auth/local_auth/pubspec.yaml b/packages/local_auth/local_auth/pubspec.yaml
index bebdab49c851..340648521d0e 100644
--- a/packages/local_auth/local_auth/pubspec.yaml
+++ b/packages/local_auth/local_auth/pubspec.yaml
@@ -3,7 +3,7 @@ description: Flutter plugin for Android and iOS devices to allow local
authentication via fingerprint, touch ID, face ID, passcode, pin, or pattern.
repository: https://github.com/flutter/packages/tree/main/packages/local_auth/local_auth
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 2.1.5
+version: 2.1.6
environment:
sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/local_auth/local_auth_ios/CHANGELOG.md b/packages/local_auth/local_auth_ios/CHANGELOG.md
index ae383fb9ef5d..74a1fac64fb0 100644
--- a/packages/local_auth/local_auth_ios/CHANGELOG.md
+++ b/packages/local_auth/local_auth_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.1.0
+
+* Updates minimum Flutter version to 3.3 and iOS 11.
+
## 1.0.13
* Updates links for the merge of flutter/plugins into flutter/packages.
diff --git a/packages/local_auth/local_auth_ios/example/ios/Flutter/AppFrameworkInfo.plist b/packages/local_auth/local_auth_ios/example/ios/Flutter/AppFrameworkInfo.plist
index 3a9c234f96d4..9b41e7d87980 100644
--- a/packages/local_auth/local_auth_ios/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/packages/local_auth/local_auth_ios/example/ios/Flutter/AppFrameworkInfo.plist
@@ -25,6 +25,6 @@
arm64
MinimumOSVersion
- 9.0
+ 11.0
diff --git a/packages/local_auth/local_auth_ios/example/ios/Podfile b/packages/local_auth/local_auth_ios/example/ios/Podfile
index ee8f1d9ec3ef..bd2868089162 100644
--- a/packages/local_auth/local_auth_ios/example/ios/Podfile
+++ b/packages/local_auth/local_auth_ios/example/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '9.0'
+# platform :ios, '11.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/packages/local_auth/local_auth_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/local_auth/local_auth_ios/example/ios/Runner.xcodeproj/project.pbxproj
index cbf16eef4060..d563a52b8333 100644
--- a/packages/local_auth/local_auth_ios/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/local_auth/local_auth_ios/example/ios/Runner.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 50;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -282,10 +282,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -296,6 +298,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
@@ -412,7 +415,7 @@
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = RunnerTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
@@ -436,7 +439,7 @@
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = RunnerTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.google.RunnerTests;
@@ -494,7 +497,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -544,7 +547,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
diff --git a/packages/local_auth/local_auth_ios/example/ios/Runner/Info.plist b/packages/local_auth/local_auth_ios/example/ios/Runner/Info.plist
index f8e0356d0a68..1af663b3f83c 100644
--- a/packages/local_auth/local_auth_ios/example/ios/Runner/Info.plist
+++ b/packages/local_auth/local_auth_ios/example/ios/Runner/Info.plist
@@ -47,5 +47,9 @@
NSFaceIDUsageDescription
App needs to authenticate using faces.
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/packages/local_auth/local_auth_ios/example/ios/RunnerTests/FLTLocalAuthPluginTests.m b/packages/local_auth/local_auth_ios/example/ios/RunnerTests/FLTLocalAuthPluginTests.m
index 51c94ccc39e7..8ca4c4ecbb7e 100644
--- a/packages/local_auth/local_auth_ios/example/ios/RunnerTests/FLTLocalAuthPluginTests.m
+++ b/packages/local_auth/local_auth_ios/example/ios/RunnerTests/FLTLocalAuthPluginTests.m
@@ -361,40 +361,38 @@ - (void)testDeviceSupportsBiometrics_withEnrolledHardware {
[self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
-- (void)testDeviceSupportsBiometrics_withNonEnrolledHardware_iOS11 {
- if (@available(iOS 11, *)) {
- FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
- id mockAuthContext = OCMClassMock([LAContext class]);
- plugin.authContextOverrides = @[ mockAuthContext ];
-
- const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
- void (^canEvaluatePolicyHandler)(NSInvocation *) = ^(NSInvocation *invocation) {
- // Write error
- NSError *__autoreleasing *authError;
- [invocation getArgument:&authError atIndex:3];
- *authError = [NSError errorWithDomain:@"error" code:LAErrorBiometryNotEnrolled userInfo:nil];
- // Write return value
- BOOL returnValue = NO;
- NSValue *nsReturnValue = [NSValue valueWithBytes:&returnValue objCType:@encode(BOOL)];
- [invocation setReturnValue:&nsReturnValue];
- };
- OCMStub([mockAuthContext canEvaluatePolicy:policy
- error:(NSError * __autoreleasing *)[OCMArg anyPointer]])
- .andDo(canEvaluatePolicyHandler);
-
- FlutterMethodCall *call =
- [FlutterMethodCall methodCallWithMethodName:@"deviceSupportsBiometrics" arguments:@{}];
- XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
- [plugin handleMethodCall:call
- result:^(id _Nullable result) {
- XCTAssertTrue([NSThread isMainThread]);
- XCTAssertTrue([result isKindOfClass:[NSNumber class]]);
- XCTAssertTrue([result boolValue]);
- [expectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:kTimeout handler:nil];
- }
+- (void)testDeviceSupportsBiometrics_withNonEnrolledHardware {
+ FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
+ id mockAuthContext = OCMClassMock([LAContext class]);
+ plugin.authContextOverrides = @[ mockAuthContext ];
+
+ const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
+ void (^canEvaluatePolicyHandler)(NSInvocation *) = ^(NSInvocation *invocation) {
+ // Write error
+ NSError *__autoreleasing *authError;
+ [invocation getArgument:&authError atIndex:3];
+ *authError = [NSError errorWithDomain:@"error" code:LAErrorBiometryNotEnrolled userInfo:nil];
+ // Write return value
+ BOOL returnValue = NO;
+ NSValue *nsReturnValue = [NSValue valueWithBytes:&returnValue objCType:@encode(BOOL)];
+ [invocation setReturnValue:&nsReturnValue];
+ };
+ OCMStub([mockAuthContext canEvaluatePolicy:policy
+ error:(NSError * __autoreleasing *)[OCMArg anyPointer]])
+ .andDo(canEvaluatePolicyHandler);
+
+ FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"deviceSupportsBiometrics"
+ arguments:@{}];
+ XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
+ [plugin handleMethodCall:call
+ result:^(id _Nullable result) {
+ XCTAssertTrue([NSThread isMainThread]);
+ XCTAssertTrue([result isKindOfClass:[NSNumber class]]);
+ XCTAssertTrue([result boolValue]);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
- (void)testDeviceSupportsBiometrics_withNoBiometricHardware {
@@ -431,68 +429,38 @@ - (void)testDeviceSupportsBiometrics_withNoBiometricHardware {
[self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
-- (void)testGetEnrolledBiometrics_withFaceID_iOS11 {
- if (@available(iOS 11, *)) {
- FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
- id mockAuthContext = OCMClassMock([LAContext class]);
- plugin.authContextOverrides = @[ mockAuthContext ];
-
- const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
- OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES);
- OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeFaceID);
-
- FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
- arguments:@{}];
- XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
- [plugin handleMethodCall:call
- result:^(id _Nullable result) {
- XCTAssertTrue([NSThread isMainThread]);
- XCTAssertTrue([result isKindOfClass:[NSArray class]]);
- XCTAssertEqual([result count], 1);
- XCTAssertEqualObjects(result[0], @"face");
- [expectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:kTimeout handler:nil];
- }
-}
+- (void)testGetEnrolledBiometrics_withFaceID {
+ FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
+ id mockAuthContext = OCMClassMock([LAContext class]);
+ plugin.authContextOverrides = @[ mockAuthContext ];
+
+ const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
+ OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES);
+ OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeFaceID);
+
+ FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
+ arguments:@{}];
+ XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
+ [plugin handleMethodCall:call
+ result:^(id _Nullable result) {
+ XCTAssertTrue([NSThread isMainThread]);
+ XCTAssertTrue([result isKindOfClass:[NSArray class]]);
+ XCTAssertEqual([result count], 1);
+ XCTAssertEqualObjects(result[0], @"face");
+ [expectation fulfill];
+ }];
-- (void)testGetEnrolledBiometrics_withTouchID_iOS11 {
- if (@available(iOS 11, *)) {
- FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
- id mockAuthContext = OCMClassMock([LAContext class]);
- plugin.authContextOverrides = @[ mockAuthContext ];
-
- const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
- OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES);
- OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeTouchID);
-
- FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
- arguments:@{}];
- XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
- [plugin handleMethodCall:call
- result:^(id _Nullable result) {
- XCTAssertTrue([NSThread isMainThread]);
- XCTAssertTrue([result isKindOfClass:[NSArray class]]);
- XCTAssertEqual([result count], 1);
- XCTAssertEqualObjects(result[0], @"fingerprint");
- [expectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:kTimeout handler:nil];
- }
+ [self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
-- (void)testGetEnrolledBiometrics_withTouchID_preIOS11 {
- if (@available(iOS 11, *)) {
- return;
- }
+- (void)testGetEnrolledBiometrics_withTouchID {
FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
id mockAuthContext = OCMClassMock([LAContext class]);
plugin.authContextOverrides = @[ mockAuthContext ];
const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
OCMStub([mockAuthContext canEvaluatePolicy:policy error:[OCMArg setTo:nil]]).andReturn(YES);
+ OCMStub([mockAuthContext biometryType]).andReturn(LABiometryTypeTouchID);
FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
arguments:@{}];
@@ -509,39 +477,37 @@ - (void)testGetEnrolledBiometrics_withTouchID_preIOS11 {
[self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
-- (void)testGetEnrolledBiometrics_withoutEnrolledHardware_iOS11 {
- if (@available(iOS 11, *)) {
- FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
- id mockAuthContext = OCMClassMock([LAContext class]);
- plugin.authContextOverrides = @[ mockAuthContext ];
-
- const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
- void (^canEvaluatePolicyHandler)(NSInvocation *) = ^(NSInvocation *invocation) {
- // Write error
- NSError *__autoreleasing *authError;
- [invocation getArgument:&authError atIndex:3];
- *authError = [NSError errorWithDomain:@"error" code:LAErrorBiometryNotEnrolled userInfo:nil];
- // Write return value
- BOOL returnValue = NO;
- NSValue *nsReturnValue = [NSValue valueWithBytes:&returnValue objCType:@encode(BOOL)];
- [invocation setReturnValue:&nsReturnValue];
- };
- OCMStub([mockAuthContext canEvaluatePolicy:policy
- error:(NSError * __autoreleasing *)[OCMArg anyPointer]])
- .andDo(canEvaluatePolicyHandler);
-
- FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
- arguments:@{}];
- XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
- [plugin handleMethodCall:call
- result:^(id _Nullable result) {
- XCTAssertTrue([NSThread isMainThread]);
- XCTAssertTrue([result isKindOfClass:[NSArray class]]);
- XCTAssertEqual([result count], 0);
- [expectation fulfill];
- }];
-
- [self waitForExpectationsWithTimeout:kTimeout handler:nil];
- }
+- (void)testGetEnrolledBiometrics_withoutEnrolledHardware {
+ FLTLocalAuthPlugin *plugin = [[FLTLocalAuthPlugin alloc] init];
+ id mockAuthContext = OCMClassMock([LAContext class]);
+ plugin.authContextOverrides = @[ mockAuthContext ];
+
+ const LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
+ void (^canEvaluatePolicyHandler)(NSInvocation *) = ^(NSInvocation *invocation) {
+ // Write error
+ NSError *__autoreleasing *authError;
+ [invocation getArgument:&authError atIndex:3];
+ *authError = [NSError errorWithDomain:@"error" code:LAErrorBiometryNotEnrolled userInfo:nil];
+ // Write return value
+ BOOL returnValue = NO;
+ NSValue *nsReturnValue = [NSValue valueWithBytes:&returnValue objCType:@encode(BOOL)];
+ [invocation setReturnValue:&nsReturnValue];
+ };
+ OCMStub([mockAuthContext canEvaluatePolicy:policy
+ error:(NSError * __autoreleasing *)[OCMArg anyPointer]])
+ .andDo(canEvaluatePolicyHandler);
+
+ FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getEnrolledBiometrics"
+ arguments:@{}];
+ XCTestExpectation *expectation = [self expectationWithDescription:@"Result is called"];
+ [plugin handleMethodCall:call
+ result:^(id _Nullable result) {
+ XCTAssertTrue([NSThread isMainThread]);
+ XCTAssertTrue([result isKindOfClass:[NSArray class]]);
+ XCTAssertEqual([result count], 0);
+ [expectation fulfill];
+ }];
+
+ [self waitForExpectationsWithTimeout:kTimeout handler:nil];
}
@end
diff --git a/packages/local_auth/local_auth_ios/ios/Classes/FLTLocalAuthPlugin.m b/packages/local_auth/local_auth_ios/ios/Classes/FLTLocalAuthPlugin.m
index 4d982549643d..10c1e812fbcb 100644
--- a/packages/local_auth/local_auth_ios/ios/Classes/FLTLocalAuthPlugin.m
+++ b/packages/local_auth/local_auth_ios/ios/Classes/FLTLocalAuthPlugin.m
@@ -84,16 +84,9 @@ - (void)alertMessage:(NSString *)message
handler:^(UIAlertAction *action) {
if (UIApplicationOpenSettingsURLString != NULL) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
- if (@available(iOS 10, *)) {
- [[UIApplication sharedApplication] openURL:url
- options:@{}
- completionHandler:NULL];
- } else {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- [[UIApplication sharedApplication] openURL:url];
-#pragma clang diagnostic pop
- }
+ [[UIApplication sharedApplication] openURL:url
+ options:@{}
+ completionHandler:NULL];
result(@NO);
}
}];
@@ -117,17 +110,9 @@ - (void)deviceSupportsBiometrics:(FlutterResult)result {
}
// If not, check if it is because no biometrics are enrolled (but still present).
if (authError != nil) {
- if (@available(iOS 11, *)) {
- if (authError.code == LAErrorBiometryNotEnrolled) {
- result(@YES);
- return;
- }
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- } else if (authError.code == LAErrorTouchIDNotEnrolled) {
+ if (authError.code == LAErrorBiometryNotEnrolled) {
result(@YES);
return;
-#pragma clang diagnostic pop
}
}
@@ -141,13 +126,9 @@ - (void)getEnrolledBiometrics:(FlutterResult)result {
if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
error:&authError]) {
if (authError == nil) {
- if (@available(iOS 11, *)) {
- if (context.biometryType == LABiometryTypeFaceID) {
- [biometrics addObject:@"face"];
- } else if (context.biometryType == LABiometryTypeTouchID) {
- [biometrics addObject:@"fingerprint"];
- }
- } else {
+ if (context.biometryType == LABiometryTypeFaceID) {
+ [biometrics addObject:@"face"];
+ } else if (context.biometryType == LABiometryTypeTouchID) {
[biometrics addObject:@"fingerprint"];
}
}
@@ -216,14 +197,9 @@ - (void)handleAuthReplyWithSuccess:(BOOL)success
result(@YES);
} else {
switch (error.code) {
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- // TODO(stuartmorgan): Remove the pragma and s/TouchID/Biometry/ in these constants when
- // iOS 10 support is dropped. The values are the same, only the names have changed.
- case LAErrorTouchIDNotAvailable:
- case LAErrorTouchIDNotEnrolled:
- case LAErrorTouchIDLockout:
-#pragma clang diagnostic pop
+ case LAErrorBiometryNotAvailable:
+ case LAErrorBiometryNotEnrolled:
+ case LAErrorBiometryLockout:
case LAErrorUserFallback:
case LAErrorPasscodeNotSet:
case LAErrorAuthenticationFailed:
@@ -248,12 +224,7 @@ - (void)handleErrors:(NSError *)authError
NSString *errorCode = @"NotAvailable";
switch (authError.code) {
case LAErrorPasscodeNotSet:
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- // TODO(stuartmorgan): Remove the pragma and s/TouchID/Biometry/ in this constant when
- // iOS 10 support is dropped. The values are the same, only the names have changed.
- case LAErrorTouchIDNotEnrolled:
-#pragma clang diagnostic pop
+ case LAErrorBiometryNotEnrolled:
if ([arguments[@"useErrorDialogs"] boolValue]) {
[self alertMessage:arguments[@"goToSettingDescriptionIOS"]
firstButton:arguments[@"okButton"]
@@ -263,12 +234,7 @@ - (void)handleErrors:(NSError *)authError
}
errorCode = authError.code == LAErrorPasscodeNotSet ? @"PasscodeNotSet" : @"NotEnrolled";
break;
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- // TODO(stuartmorgan): Remove the pragma and s/TouchID/Biometry/ in this constant when
- // iOS 10 support is dropped. The values are the same, only the names have changed.
- case LAErrorTouchIDLockout:
-#pragma clang diagnostic pop
+ case LAErrorBiometryLockout:
[self alertMessage:arguments[@"lockOut"]
firstButton:arguments[@"okButton"]
flutterResult:result
diff --git a/packages/local_auth/local_auth_ios/ios/local_auth_ios.podspec b/packages/local_auth/local_auth_ios/ios/local_auth_ios.podspec
index 734f7b6734bd..02342c7a6bdf 100644
--- a/packages/local_auth/local_auth_ios/ios/local_auth_ios.podspec
+++ b/packages/local_auth/local_auth_ios/ios/local_auth_ios.podspec
@@ -17,7 +17,7 @@ Downloaded by pub (not CocoaPods).
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
- s.platform = :ios, '9.0'
+ s.platform = :ios, '11.0'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
end
diff --git a/packages/local_auth/local_auth_ios/pubspec.yaml b/packages/local_auth/local_auth_ios/pubspec.yaml
index 34603c005189..756cf8cb2ad2 100644
--- a/packages/local_auth/local_auth_ios/pubspec.yaml
+++ b/packages/local_auth/local_auth_ios/pubspec.yaml
@@ -2,11 +2,11 @@ name: local_auth_ios
description: iOS implementation of the local_auth plugin.
repository: https://github.com/flutter/packages/tree/main/packages/local_auth/local_auth_ios
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 1.0.13
+version: 1.1.0
environment:
- sdk: ">=2.14.0 <3.0.0"
- flutter: ">=3.0.0"
+ sdk: ">=2.18.0 <3.0.0"
+ flutter: ">=3.3.0"
flutter:
plugin: