ios objective-c facebook ios8 uiactivityviewcontroller

ios - Facebook no se muestra en UIActivityViewController pero Twitter lo hace



objective-c ios8 (5)

Mi iOS es 8.1.2 y estoy usando UIActivityViewController para compartir en redes sociales. Hago clic en un botón y permito que el UIActivityViewController presente

- (IBAction)UIActivityTypeButtonClick:(id)sender { NSString* text=@"I am sharing this text"; NSArray* sharedArray=@[text]; UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil]; activityVC.excludedActivityTypes=@[]; [self presentViewController:activityVC animated:YES completion:nil]; }

Estoy recibiendo esto

Recibo el mensaje , Twitter , Correo , WhatsApp y un botón Más .
Al hacer clic en Más me sale esto.

¿Dónde está FACEBOOK . Tengo la aplicación de Facebook en mi iPhone y está configurada con mi ID también en la configuración. Pero el facebook nunca aparece aquí. Twitter lo hace. ¿Este es un problema o qué? Por favor recomiende

Gracias


Confirmo lo que informó djr: si tiene el texto de la aplicación FB ya no se comparte. Borre la aplicación FB y ahora comparto trabajos de texto e imagen.



Lo vi por primera vez cuando Facebook actualizó su aplicación el 24 de abril. El intercambio de texto simple a Facebook no funciona siempre que la aplicación de Facebook esté instalada. Después de borrarlo, está disponible de nuevo.

Si intenta compartir una URL o una imagen junto con el texto sin formato, verá Facebook como una opción pero el campo de texto estará en blanco. La imagen o URL se adjuntará sin ningún problema.

Publiqué un proyecto de muestra que reproduce este problema en github:

https://github.com/djr/UIActivityViewController-Facebook

Esto no es una respuesta, pero está bastante claro que el problema está causado por la aplicación de Facebook.

EDITAR:

No es lo ideal, pero he creado una solución alternativa. No olvide que necesitará adjuntar una imagen o una URL para que esto funcione.

  1. Detectar si el usuario tiene instalada la aplicación de Facebook. Si lo hacen, entonces dales algún tipo de mensaje informativo.

    BOOL facebookIsInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]; BOOL isUserLoggedInWithFacebook = [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]; if(isUserLoggedInWithFacebook && facebookIsInstalled) { // Explain that they have to copy and paste in order to share on Facebook }

  2. Crear una subclase de UIActivityItemProvider y anular

    - (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { NSString *stringToShare = @"string to share"; if([activityType isEqualToString:UIActivityTypePostToFacebook] || [activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] || [activityType.lowercaseString rangeOfString:@"facebook"].length) // Because who knows when they are going to change the activityType string? { // Automatically copy the text for them [[UIPasteboard generalPasteboard] setString:stringToShare]; } return stringToShare; }

  3. Dígale al usuario que tiene que pegar en el campo de texto de Facebook para poder compartir.

  4. La culpa es de Facebook.


Para mostrar el botón de compartir de Facebook, debe agregar una imagen a la serie de elementos de actividad ... esto puede ser un error en el lado de Apple, pero no he visto ningún radar abierto sobre este problema.

Además, la nota sobre el texto de iOS 8.3 no se puede agregar a Facebook por algún motivo. al agregar texto solo se presentará a un campo de texto en blanco.

UIImage *image = [UIImage imageNamed:@"__some_image__file"]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image] applicationActivities:nil]; [self presentViewController:activityViewController animated:YES completion:nil];


NSString* text=@"I am sharing this text"; NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"]; // UIImage * myImage =[UIImage imageNamed:@"myImage.png"]; NSArray* sharedArray=@[text,myWebsite]; UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil]; NSArray *excludedActivities = @[]; activityVC.excludedActivityTypes=excludedActivities; [self presentViewController:activityVC animated:YES completion:nil];