UIActivityViewControllerの制御は非常に制限されていますが、よく知られているmimeタイプをアタッチしている場合は、ファイルURLに関連するファイル拡張子を指定することで、正しく機能させることができます。たとえば、添付ファイルがvCardの場合は、ファイルURLで「.vcf」拡張子を使用します。
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];