Tiene un control muy limitado sobre UIActivityViewController, pero si va a asociar tipos de mime bien conocidos, descubrí que puede hacer que funcione correctamente al proporcionar la extensión de archivo asociada en una URL de archivo. Por ejemplo, si el archivo adjunto es una tarjeta digital, utilice la extensión ".vcf" en el URL del archivo:
NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// The file extension is important so that some mime magic happens!
NSString *filePath = [docsPath stringByAppendingPathComponent:@"vcard.vcf"];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
[data writeToURL:fileUrl atomically:YES]; // save the file
// Now pass the file URL in the activity items array
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:
@[@"Here's an attached vCard", fileUrl] applicationActivities:nil];
[vc presentModalViewController:avc animated:YES];
Esto realmente funcionó, gracias markiv :) Combiné esto con otra guía sobre cómo crear archivos personalizados para una aplicación (por ejemplo, archivos usando .myApp), y conseguí que funcione también con el archivo URL. – Setomidor
disculpa por mencionar esta vieja pregunta, pero no debería '[data writeToURL: filePath atómicamente: YES]' be '[data writeToURL: fileURL atically: YES]'? –
@GabrielePetronella Sí o creo que [data writeToFile: filePath atómicamente: SÍ] también funcionaría. –