iOS - deprecate iOS 9 support by removing runtime checks for 10.0+
Summary: This removes all callsites that rely on runtime checks to detect the target deployment version. We no longer need to check for iOS 10+ in a few places. Note: for this to compile, the hosting app needs to target iOS 10.0+. Changelog: [iOS] [Deprecated] - Deprecate iOS 9 Reviewed By: hramos Differential Revision: D19271321 fbshipit-source-id: 424ad7e2161261d148cb436cc20b4c531a4ba5b7
This commit is contained in:
Родитель
9d36375b66
Коммит
d3e81d5832
|
@ -99,30 +99,8 @@ RCT_EXPORT_METHOD(openURL:(NSURL *)URL
|
|||
resolve:(RCTPromiseResolveBlock)resolve
|
||||
reject:(RCTPromiseRejectBlock)reject)
|
||||
{
|
||||
if (@available(iOS 10.0, *)) {
|
||||
[RCTSharedApplication() openURL:URL options:@{} completionHandler:^(BOOL success) {
|
||||
if (success) {
|
||||
resolve(@YES);
|
||||
} else {
|
||||
#if TARGET_OS_SIMULATOR
|
||||
// Simulator-specific code
|
||||
if([URL.absoluteString hasPrefix:@"tel:"]){
|
||||
RCTLogWarn(@"Unable to open the Phone app in the simulator for telephone URLs. URL: %@", URL);
|
||||
resolve(@NO);
|
||||
} else {
|
||||
reject(RCTErrorUnspecified, [NSString stringWithFormat:@"Unable to open URL: %@", URL], nil);
|
||||
}
|
||||
#else
|
||||
// Device-specific code
|
||||
reject(RCTErrorUnspecified, [NSString stringWithFormat:@"Unable to open URL: %@", URL], nil);
|
||||
#endif
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
#if !TARGET_OS_UIKITFORMAC
|
||||
// Note: this branch will never be taken on UIKitForMac
|
||||
BOOL opened = [RCTSharedApplication() openURL:URL];
|
||||
if (opened) {
|
||||
[RCTSharedApplication() openURL:URL options:@{} completionHandler:^(BOOL success) {
|
||||
if (success) {
|
||||
resolve(@YES);
|
||||
} else {
|
||||
#if TARGET_OS_SIMULATOR
|
||||
|
@ -138,9 +116,7 @@ RCT_EXPORT_METHOD(openURL:(NSURL *)URL
|
|||
reject(RCTErrorUnspecified, [NSString stringWithFormat:@"Unable to open URL: %@", URL], nil);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(canOpenURL:(NSURL *)URL
|
||||
|
@ -193,25 +169,13 @@ RCT_EXPORT_METHOD(openSettings:(RCTPromiseResolveBlock)resolve
|
|||
reject:(__unused RCTPromiseRejectBlock)reject)
|
||||
{
|
||||
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||
if (@available(iOS 10.0, *)) {
|
||||
[RCTSharedApplication() openURL:url options:@{} completionHandler:^(BOOL success) {
|
||||
if (success) {
|
||||
resolve(nil);
|
||||
} else {
|
||||
reject(RCTErrorUnspecified, @"Unable to open app settings", nil);
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
#if !TARGET_OS_UIKITFORMAC
|
||||
// Note: This branch will never be taken on UIKitForMac
|
||||
BOOL opened = [RCTSharedApplication() openURL:url];
|
||||
if (opened) {
|
||||
resolve(nil);
|
||||
} else {
|
||||
reject(RCTErrorUnspecified, @"Unable to open app settings", nil);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
[RCTSharedApplication() openURL:url options:@{} completionHandler:^(BOOL success) {
|
||||
if (success) {
|
||||
resolve(nil);
|
||||
} else {
|
||||
reject(RCTErrorUnspecified, @"Unable to open app settings", nil);
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(sendIntent:(NSString *)action
|
||||
|
|
|
@ -472,36 +472,27 @@ RCT_EXPORT_METHOD(getScheduledLocalNotifications:(RCTResponseSenderBlock)callbac
|
|||
|
||||
RCT_EXPORT_METHOD(removeAllDeliveredNotifications)
|
||||
{
|
||||
// TODO: T56867629
|
||||
if (@available(iOS 10.0, tvOS 10.0, *)) {
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center removeAllDeliveredNotifications];
|
||||
}
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center removeAllDeliveredNotifications];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(removeDeliveredNotifications:(NSArray<NSString *> *)identifiers)
|
||||
{
|
||||
// TODO: T56867629
|
||||
if (@available(iOS 10.0, tvOS 10.0, *)) {
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center removeDeliveredNotificationsWithIdentifiers:identifiers];
|
||||
}
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center removeDeliveredNotificationsWithIdentifiers:identifiers];
|
||||
}
|
||||
|
||||
RCT_EXPORT_METHOD(getDeliveredNotifications:(RCTResponseSenderBlock)callback)
|
||||
{
|
||||
// TODO: T56867629
|
||||
if (@available(iOS 10.0, tvOS 10.0, *)) {
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center getDeliveredNotificationsWithCompletionHandler:^(NSArray<UNNotification *> *_Nonnull notifications) {
|
||||
NSMutableArray<NSDictionary *> *formattedNotifications = [NSMutableArray new];
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
[center getDeliveredNotificationsWithCompletionHandler:^(NSArray<UNNotification *> *_Nonnull notifications) {
|
||||
NSMutableArray<NSDictionary *> *formattedNotifications = [NSMutableArray new];
|
||||
|
||||
for (UNNotification *notification in notifications) {
|
||||
[formattedNotifications addObject:RCTFormatUNNotification(notification)];
|
||||
}
|
||||
callback(@[formattedNotifications]);
|
||||
}];
|
||||
}
|
||||
for (UNNotification *notification in notifications) {
|
||||
[formattedNotifications addObject:RCTFormatUNNotification(notification)];
|
||||
}
|
||||
callback(@[formattedNotifications]);
|
||||
}];
|
||||
}
|
||||
|
||||
#else //TARGET_OS_TV / TARGET_OS_UIKITFORMAC
|
||||
|
|
|
@ -194,68 +194,65 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithFrame:(CGRect)frame)
|
|||
|
||||
- (void)setTextContentType:(NSString *)type
|
||||
{
|
||||
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
|
||||
if (@available(iOS 10.0, *)) {
|
||||
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED)
|
||||
static dispatch_once_t onceToken;
|
||||
static NSDictionary<NSString *, NSString *> *contentTypeMap;
|
||||
|
||||
static dispatch_once_t onceToken;
|
||||
static NSDictionary<NSString *, NSString *> *contentTypeMap;
|
||||
dispatch_once(&onceToken, ^{
|
||||
contentTypeMap = @{@"none": @"",
|
||||
@"URL": UITextContentTypeURL,
|
||||
@"addressCity": UITextContentTypeAddressCity,
|
||||
@"addressCityAndState":UITextContentTypeAddressCityAndState,
|
||||
@"addressState": UITextContentTypeAddressState,
|
||||
@"countryName": UITextContentTypeCountryName,
|
||||
@"creditCardNumber": UITextContentTypeCreditCardNumber,
|
||||
@"emailAddress": UITextContentTypeEmailAddress,
|
||||
@"familyName": UITextContentTypeFamilyName,
|
||||
@"fullStreetAddress": UITextContentTypeFullStreetAddress,
|
||||
@"givenName": UITextContentTypeGivenName,
|
||||
@"jobTitle": UITextContentTypeJobTitle,
|
||||
@"location": UITextContentTypeLocation,
|
||||
@"middleName": UITextContentTypeMiddleName,
|
||||
@"name": UITextContentTypeName,
|
||||
@"namePrefix": UITextContentTypeNamePrefix,
|
||||
@"nameSuffix": UITextContentTypeNameSuffix,
|
||||
@"nickname": UITextContentTypeNickname,
|
||||
@"organizationName": UITextContentTypeOrganizationName,
|
||||
@"postalCode": UITextContentTypePostalCode,
|
||||
@"streetAddressLine1": UITextContentTypeStreetAddressLine1,
|
||||
@"streetAddressLine2": UITextContentTypeStreetAddressLine2,
|
||||
@"sublocality": UITextContentTypeSublocality,
|
||||
@"telephoneNumber": UITextContentTypeTelephoneNumber,
|
||||
};
|
||||
|
||||
dispatch_once(&onceToken, ^{
|
||||
contentTypeMap = @{@"none": @"",
|
||||
@"URL": UITextContentTypeURL,
|
||||
@"addressCity": UITextContentTypeAddressCity,
|
||||
@"addressCityAndState":UITextContentTypeAddressCityAndState,
|
||||
@"addressState": UITextContentTypeAddressState,
|
||||
@"countryName": UITextContentTypeCountryName,
|
||||
@"creditCardNumber": UITextContentTypeCreditCardNumber,
|
||||
@"emailAddress": UITextContentTypeEmailAddress,
|
||||
@"familyName": UITextContentTypeFamilyName,
|
||||
@"fullStreetAddress": UITextContentTypeFullStreetAddress,
|
||||
@"givenName": UITextContentTypeGivenName,
|
||||
@"jobTitle": UITextContentTypeJobTitle,
|
||||
@"location": UITextContentTypeLocation,
|
||||
@"middleName": UITextContentTypeMiddleName,
|
||||
@"name": UITextContentTypeName,
|
||||
@"namePrefix": UITextContentTypeNamePrefix,
|
||||
@"nameSuffix": UITextContentTypeNameSuffix,
|
||||
@"nickname": UITextContentTypeNickname,
|
||||
@"organizationName": UITextContentTypeOrganizationName,
|
||||
@"postalCode": UITextContentTypePostalCode,
|
||||
@"streetAddressLine1": UITextContentTypeStreetAddressLine1,
|
||||
@"streetAddressLine2": UITextContentTypeStreetAddressLine2,
|
||||
@"sublocality": UITextContentTypeSublocality,
|
||||
@"telephoneNumber": UITextContentTypeTelephoneNumber,
|
||||
};
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
|
||||
if (@available(iOS 11.0, tvOS 11.0, *)) {
|
||||
NSDictionary<NSString *, NSString *> * iOS11extras = @{@"username": UITextContentTypeUsername,
|
||||
@"password": UITextContentTypePassword};
|
||||
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
|
||||
if (@available(iOS 11.0, tvOS 11.0, *)) {
|
||||
NSDictionary<NSString *, NSString *> * iOS11extras = @{@"username": UITextContentTypeUsername,
|
||||
@"password": UITextContentTypePassword};
|
||||
NSMutableDictionary<NSString *, NSString *> * iOS11baseMap = [contentTypeMap mutableCopy];
|
||||
[iOS11baseMap addEntriesFromDictionary:iOS11extras];
|
||||
|
||||
NSMutableDictionary<NSString *, NSString *> * iOS11baseMap = [contentTypeMap mutableCopy];
|
||||
[iOS11baseMap addEntriesFromDictionary:iOS11extras];
|
||||
contentTypeMap = [iOS11baseMap copy];
|
||||
}
|
||||
#endif
|
||||
|
||||
contentTypeMap = [iOS11baseMap copy];
|
||||
}
|
||||
#endif
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 120000 /* __IPHONE_12_0 */
|
||||
if (@available(iOS 12.0, tvOS 12.0, *)) {
|
||||
NSDictionary<NSString *, NSString *> * iOS12extras = @{@"newPassword": UITextContentTypeNewPassword,
|
||||
@"oneTimeCode": UITextContentTypeOneTimeCode};
|
||||
|
||||
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 120000 /* __IPHONE_12_0 */
|
||||
if (@available(iOS 12.0, tvOS 12.0, *)) {
|
||||
NSDictionary<NSString *, NSString *> * iOS12extras = @{@"newPassword": UITextContentTypeNewPassword,
|
||||
@"oneTimeCode": UITextContentTypeOneTimeCode};
|
||||
NSMutableDictionary<NSString *, NSString *> * iOS12baseMap = [contentTypeMap mutableCopy];
|
||||
[iOS12baseMap addEntriesFromDictionary:iOS12extras];
|
||||
|
||||
NSMutableDictionary<NSString *, NSString *> * iOS12baseMap = [contentTypeMap mutableCopy];
|
||||
[iOS12baseMap addEntriesFromDictionary:iOS12extras];
|
||||
contentTypeMap = [iOS12baseMap copy];
|
||||
}
|
||||
#endif
|
||||
});
|
||||
|
||||
contentTypeMap = [iOS12baseMap copy];
|
||||
}
|
||||
#endif
|
||||
});
|
||||
|
||||
// Setting textContentType to an empty string will disable any
|
||||
// default behaviour, like the autofill bar for password inputs
|
||||
self.backedTextInputView.textContentType = contentTypeMap[type] ?: type;
|
||||
}
|
||||
// Setting textContentType to an empty string will disable any
|
||||
// default behaviour, like the autofill bar for password inputs
|
||||
self.backedTextInputView.textContentType = contentTypeMap[type] ?: type;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -363,10 +363,7 @@ RCT_ENUM_CONVERTER(UITextFieldViewMode, (@{
|
|||
// Added for Android compatibility
|
||||
@"numeric": @(UIKeyboardTypeDecimalPad),
|
||||
}];
|
||||
// TODO: T56867629
|
||||
if (@available(iOS 10.0, tvOS 10.0, *)) {
|
||||
temporaryMapping[@"ascii-capable-number-pad"] = @(UIKeyboardTypeASCIICapableNumberPad);
|
||||
}
|
||||
temporaryMapping[@"ascii-capable-number-pad"] = @(UIKeyboardTypeASCIICapableNumberPad);
|
||||
mapping = temporaryMapping;
|
||||
});
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ using namespace facebook::react;
|
|||
return;
|
||||
}
|
||||
|
||||
if (@available(iOS 10.0, macOS 13.0, *)) {
|
||||
if (@available(macOS 13.0, *)) {
|
||||
_scrollViewComponentView.scrollView.refreshControl = _refreshControl;
|
||||
}
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ using namespace facebook::react;
|
|||
// iOS requires to end refreshing before unmounting.
|
||||
[_refreshControl endRefreshing];
|
||||
|
||||
if (@available(iOS 10.0, macOS 13.0, *)) {
|
||||
if (@available(macOS 13.0, *)) {
|
||||
_scrollViewComponentView.scrollView.refreshControl = nil;
|
||||
}
|
||||
_scrollViewComponentView = nil;
|
||||
|
|
Загрузка…
Ссылка в новой задаче