From afea7f03cdaeacc9ca9fc57ba0c54fb425a137ac Mon Sep 17 00:00:00 2001 From: Michael Treacher Date: Mon, 23 May 2016 21:06:11 +1000 Subject: [PATCH] Update the social code to run async and support ios7, 8 and 9 --- .../Plugins/iOS/FrispGames/Social/FGSocial.mm | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Assets/Plugins/iOS/FrispGames/Social/FGSocial.mm b/Assets/Plugins/iOS/FrispGames/Social/FGSocial.mm index 18d59db..765a53d 100644 --- a/Assets/Plugins/iOS/FrispGames/Social/FGSocial.mm +++ b/Assets/Plugins/iOS/FrispGames/Social/FGSocial.mm @@ -1,25 +1,26 @@ #import "FGSocial.h" -#define IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad @implementation FGSocial - (void) share:(NSString *)text media:(NSString *) media { - UIActivityViewController *socialViewController; - // Create image from image data NSData *imageData = [[NSData alloc] initWithBase64EncodedString:media options: 0]; UIImage *image = [[UIImage alloc] initWithData:imageData]; - socialViewController = [[UIActivityViewController alloc] initWithActivityItems:@[text, image] applicationActivities:nil]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + UIActivityViewController *socialViewController = [[UIActivityViewController alloc] initWithActivityItems:@[text, image] applicationActivities:nil]; + + UIViewController *viewController = UnityGetGLViewController(); + + // required by iOS 8. + if([socialViewController respondsToSelector:@selector(popoverPresentationController)]) { + socialViewController.popoverPresentationController.sourceView = viewController.view; + } - UIViewController *rootViewController = [[[[UIApplication sharedApplication]delegate] window] rootViewController]; - if (IPAD) { - CGRect midScreen = CGRectMake(rootViewController.view.frame.size.width/2, rootViewController.view.frame.size.height/4, 0, 0); - UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:socialViewController]; - [popup presentPopoverFromRect:midScreen inView:rootViewController.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; - } else { - [rootViewController presentViewController:socialViewController animated:YES completion:nil]; - } + dispatch_async(dispatch_get_main_queue(), ^{ + [viewController presentViewController:socialViewController animated:YES completion:nil]; + }); + }); } extern "C" {