diff --git a/iOS/Sample/NetworkViewController.m b/iOS/Sample/NetworkViewController.m index 6736dbf1c..263f079e3 100644 --- a/iOS/Sample/NetworkViewController.m +++ b/iOS/Sample/NetworkViewController.m @@ -44,15 +44,13 @@ [[[NSURLSession sharedSession] dataTaskWithRequest:urlRequest completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable dataTaskError) { if (dataTaskError || !data) { - UIAlertController *alertController = [weakSelf alertControllerForMessage:@"Received error in POST API response"]; - [weakSelf presentViewController:alertController animated:true completion:nil]; + [weakSelf showAlertWithMessage:@"Received error in POST API response"]; return; } NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&dataTaskError]; NSLog(@"MSG-POST: %@", dict[@"msg"]); - UIAlertController *alertController = [weakSelf alertControllerForMessage:@"Received response from POST API"]; - [weakSelf presentViewController:alertController animated:true completion:nil]; + [weakSelf showAlertWithMessage:@"Received response from POST API"]; }] resume]; } @@ -61,17 +59,21 @@ __weak NetworkViewController *weakSelf = self; [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@"https://demo9512366.mockable.io/FlipperGet"] completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) { if (error || !data) { - UIAlertController *alertController = [weakSelf alertControllerForMessage:@"Received error in GET API response"]; - [weakSelf presentViewController:alertController animated:true completion:nil]; + [weakSelf showAlertWithMessage:@"Received error in GET API response"]; return; } NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; NSLog(@"MSG-GET: %@", dict[@"msg"]); - UIAlertController *alertController = [weakSelf alertControllerForMessage:@"Received response from GET API"]; - [weakSelf presentViewController:alertController animated:true completion:nil]; + [weakSelf showAlertWithMessage:@"Received response from GET API"]; }] resume]; } +- (void)showAlertWithMessage:(nonnull NSString *)msg { + dispatch_async(dispatch_get_main_queue(), ^{ + UIAlertController *alertController = [self alertControllerForMessage:msg]; + [self presentViewController:alertController animated:true completion:nil]; + }); +} - (UIAlertController *)alertControllerForMessage:(nonnull NSString *)msg { UIAlertController *controller = [UIAlertController alertControllerWithTitle:@"Flipper" message:msg preferredStyle:UIAlertControllerStyleAlert]; diff --git a/iOS/SampleSwift/SampleSwift.xcodeproj/project.pbxproj b/iOS/SampleSwift/SampleSwift.xcodeproj/project.pbxproj index fb76eb4b4..2728c4d5c 100644 --- a/iOS/SampleSwift/SampleSwift.xcodeproj/project.pbxproj +++ b/iOS/SampleSwift/SampleSwift.xcodeproj/project.pbxproj @@ -373,7 +373,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.facebook.flipper.SampleSwift; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -424,7 +424,7 @@ OTHER_SWIFT_FLAGS = "$(inherited) -Xcc -fmodule-map-file=\"${PODS_ROOT}/Headers/Public/FlipperKit/FlipperKit.modulemap\" -Xcc -DFB_SONARKIT_ENABLED"; PRODUCT_BUNDLE_IDENTIFIER = com.facebook.flipper.SampleSwift; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 4.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; diff --git a/iOS/SampleSwift/SampleSwift/AppDelegate.swift b/iOS/SampleSwift/SampleSwift/AppDelegate.swift index 50413e62f..219b1fc5e 100644 --- a/iOS/SampleSwift/SampleSwift/AppDelegate.swift +++ b/iOS/SampleSwift/SampleSwift/AppDelegate.swift @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow() let client = FlipperClient.shared() diff --git a/iOS/SampleSwift/SampleSwift/NetworkViewController.swift b/iOS/SampleSwift/SampleSwift/NetworkViewController.swift index 03ab6b004..d9627e63a 100644 --- a/iOS/SampleSwift/SampleSwift/NetworkViewController.swift +++ b/iOS/SampleSwift/SampleSwift/NetworkViewController.swift @@ -23,9 +23,9 @@ class NetworkViewController: UIViewController { return } - let dict = try! JSONSerialization.jsonObject(with: dataUnwrapped, options: JSONSerialization.ReadingOptions.init(rawValue: 0)) as! [String: String] + let dict = try? JSONSerialization.jsonObject(with: dataUnwrapped, options: JSONSerialization.ReadingOptions.init(rawValue: 0)) as? [String: String] // As sonar cannot detect print() in Logs - NSLog("MSG-GET: \(dict["msg"] ?? "Did not find msg key in the received response")") + NSLog("MSG-GET: \(dict?["msg"] ?? "Did not find msg key in the received response")") strongSelf.showAlert(message: "Received response from GET API, please check the sonar network plugin for detailed response") } dataTask.resume() @@ -55,9 +55,9 @@ class NetworkViewController: UIViewController { return } - let dict = try! JSONSerialization.jsonObject(with: dataUnwrapped, options: JSONSerialization.ReadingOptions.init(rawValue: 0)) as! [String: String] + let dict = try? JSONSerialization.jsonObject(with: dataUnwrapped, options: JSONSerialization.ReadingOptions.init(rawValue: 0)) as? [String: String] // As sonar cannot detect print() in Logs - NSLog("MSG-POST: \(dict["msg"] ?? "Did not find msg key in the received response")") + NSLog("MSG-POST: \(dict?["msg"] ?? "Did not find msg key in the received response")") strongSelf.showAlert(message: "Received response from POST API, please check the sonar network plugin for detailed response") } dataTask.resume() @@ -85,9 +85,11 @@ class NetworkViewController: UIViewController { } func showAlert(message: String) { - let alertController = UIAlertController.init(title: "Flipper", message: message, preferredStyle: .alert); - let alertAction = UIAlertAction(title: "Okay", style: UIAlertActionStyle.default, handler: nil) - alertController.addAction(alertAction) - present(alertController, animated: true, completion: nil) + DispatchQueue.main.async { + let alertController = UIAlertController.init(title: "Flipper", message: message, preferredStyle: .alert); + let alertAction = UIAlertAction(title: "Okay", style: UIAlertAction.Style.default, handler: nil) + alertController.addAction(alertAction) + self.present(alertController, animated: true, completion: nil) + } } }