UIActivityViewController备用文件名?

我通过UIActivityViewController共享录音。 当audio文件通过电子邮件或iMessage共享时,它将显示audio文件的底层名称,而无需任何明显的方式更改。

NSArray *activityItems = [NSArray arrayWithObjects:self.audioPlayer.url, nil]; UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:avc animated:YES completion:nil]; 

如果我不使用UIActivityViewController,并直接使用MFMessageComposeViewController,比我可以使用

 [composer addAttachmentURL:self.audioPlayer.url withAlternateFilename:@"Piano Song.m4a"]; 

是否有可能与UIActivityViewController有一个替代文件名?

你可以用临时目录中的任何名字创build一个到文件的硬链接(这样你就不必复制实际的文件),并把它传递给UIActivityViewController而不是文件。

 - (NSURL *)createLinkToFileAtURL:(NSURL *)fileURL withName:(NSString *)fileName { NSFileManager *fileManager = [NSFileManager defaultManager]; // create a path in the temp directory with the fileName NSURL *tempDirectoryURL = [[NSFileManager defaultManager] temporaryDirectory]; NSURL *linkURL = [tempDirectoryURL URLByAppendingPathComponent:fileName]; // if the link already exists, delete it if ([fileManager fileExistsAtPath:linkURL.path]) { NSError *error; [fileManager removeItemAtURL:linkURL error:&error]; if (error) { // handle the error } } // create a link to the file NSError *error; BOOL flag = [fileManager linkItemAtURL:fileURL toURL:linkURL error:&error]; if (!flag || error) { // handle the error } return linkURL; } 

像这样使用它:

 NSURL *fileURL = ...; NSString *desiredName = ...; NSURL *linkURL = [self createLinkToFileAtURL:fileURL withName:desiredName]; UIActivityViewController *viewController = [[UIActivityViewController alloc] initWithActivityItems:@[linkURL] applicationActivities:nil]; [self presentViewController:viewController animated:YES completion:nil]; 

希望这可以帮助! 祝你好运!

不,不可能。 你能不能在分享之前重命名文件?