diff --git a/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXNetworkObserver.mm b/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXNetworkObserver.mm index 0bdfc1f60..838e52910 100644 --- a/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXNetworkObserver.mm +++ b/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXNetworkObserver.mm @@ -315,26 +315,23 @@ typedef void (^NSURLSessionAsyncCompletion)( + (void)injectIntoNSURLSessionTaskResume { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - // In iOS 7 resume lives in __NSCFLocalSessionTask - // In iOS 8 resume lives in NSURLSessionTask - // In iOS 9 resume lives in __NSCFURLSessionTask - // In iOS 14 resume lives in NSURLSessionTask Class className = Nil; - if (![[NSProcessInfo processInfo] + if (![NSProcessInfo.processInfo respondsToSelector:@selector(operatingSystemVersion)]) { - className = - NSClassFromString([@[ @"__", @"NSC", @"FLocalS", @"ession", @"Task" ] - componentsJoinedByString:@""]); - } else if ( - [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion < 9 || - [[NSProcessInfo processInfo] operatingSystemVersion].majorVersion >= - 14) { - className = [NSURLSessionTask class]; + // iOS ... 7 + className = NSClassFromString(@"__NSCFLocalSessionTask"); } else { - className = - NSClassFromString([@[ @"__", @"NSC", @"FURLS", @"ession", @"Task" ] - componentsJoinedByString:@""]); + NSInteger majorVersion = + NSProcessInfo.processInfo.operatingSystemVersion.majorVersion; + if (majorVersion < 9 || majorVersion >= 14) { + // iOS 8 or iOS 14+ + className = [NSURLSessionTask class]; + } else { + // iOS 9 ... 13 + className = NSClassFromString(@"__NSCFURLSessionTask"); + } } + SEL selector = @selector(resume); SEL swizzledSelector = [FLEXUtility swizzledSelectorForSelector:selector]; diff --git a/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXUtility.mm b/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXUtility.mm index ac31758ad..58594f265 100755 --- a/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXUtility.mm +++ b/iOS/Plugins/FlipperKitNetworkPlugin/SKIOSNetworkPlugin/FLEXNetworkLib/FLEXUtility.mm @@ -87,14 +87,10 @@ Method oldMethod = class_getInstanceMethod(cls, selector); if (oldMethod) { - class_addMethod( - cls, swizzledSelector, implementation, methodDescription.types); - + objc_method_description* description = method_getDescription(oldMethod); + class_addMethod(cls, swizzledSelector, implementation, description->types); Method newMethod = class_getInstanceMethod(cls, swizzledSelector); - method_exchangeImplementations(oldMethod, newMethod); - } else { - class_addMethod(cls, selector, implementation, methodDescription.types); } }